代码改变世界

随笔分类 -  C#

C# 组件模组引用第三方组件问题

2019-03-13 15:13 by 旦旦, 1853 阅读, 收藏, 编辑
摘要: 对接上一文章由于是动态加载指定程序集,会把当前目录下所有dll都加载进来。如果像sqlite这种第三组件调用了由C、C++非.net语言所以生成的Dll。因为自动生成的原因。会把非C#生成的dll都加载入来导致加载失败。程序异常。那结果当然不是我们想要的结果了。 怎么避免这类事情的发现。那竟然不能加 阅读全文

C# 动态加载组件后怎么在开发环境中调试

2019-03-11 14:04 by 旦旦, 2166 阅读, 收藏, 编辑
摘要: 动态加载组件 那就是简单的Assembly.Load动态加载dll而以。这网上资料也有不少。基本的思路基本上就是在本地上一个指定目录如【plugs】存在着一堆dll文件。主程序在初始运行时一般会把指定目录下的dll一次性用Assembly.Load加载进来。只要把指定目录变成从网络加载,或者加载指定 阅读全文

小技巧-字符串比较

2013-03-19 17:01 by 旦旦, 360 阅读, 收藏, 编辑
摘要: String类型话说“字符串”是我们平时最常用的数据类型之一,它表示一个字符序列。判断两个字符串是否相等以下的几种情况对于业务逻辑来说一般都是一样的。类型分配存储空间1null2string.Empty3""是4" "是判定为空字符串的几种写法,按照性能从高到低的顺序是:s.Length == 0 优于 s == string.Empty 优于 s == ""但实际判断字符串为空时不是所有数据都由自己定义的string.Empty来付值的外部产生的数据可能是1、4情况这是就不能单单用字符串的长度来判断为0时就为空字符串了。以下是框架自 阅读全文

以简单功能代码示例讲解我的开发经验

2013-01-19 15:52 by 旦旦, 1956 阅读, 收藏, 编辑
摘要: 编码基本上每位程序员都是会的但由于每位程序员的习惯都有所不同从而产生了各式各样的编码。怎么样的代码是最好的?这好像就没有一个很好的说法从我自己几年的开发经验觉得好的代码应该具有以下几点特性:易读:命名、函数内上下文件流程(达到基本上不用注释都知道这是的是什么)易扩展:有新的需求时可以不改动(少量改动)以前的代码就可以完成易维护:用少量的时间就可以完成维护过程(这与前两个有很大的关系)这好像是地球人都知道的但做起来又是另一回事,还是以一个数据逻辑为原型来细说。现在一堆区间数组把相交的区间数组合并起来得出新的区间数组效果如下:原始区间数组:{3,5}{1,5}{5, 9}{6, 8}{-9, 5} 阅读全文

一步一步分析Caliburn.Micro(三:绑定执行方法ActionMessage是怎么执行的)

2012-08-30 14:19 by 旦旦, 1783 阅读, 收藏, 编辑
摘要: 上次只是分析怎么把命令字符串保存到ActionMessage类,把参数绑定到Parameter属性上如果是Binding所产生的变量参数还好理解.其它的常量和带$变量的就不好理解了.那可是一连涉及到BindingScope, ConventionManager,View这几个类的. ActionMessage是继承 TriggerAction的这是触发器所执行的触发动作.写过自定触发器的人应该知道我们一般会重写OnAttached(生成UI控件时所附加代码), OnDetaching(关闭UI控件时对应的释放代码做到有借有还原理不让过度浪费资源), Invoke(触发器最终执行的代码)通过树形 阅读全文

IList与IList[T],自定义接口IActionList

2012-08-28 14:45 by 旦旦, 2439 阅读, 收藏, 编辑
摘要: 附件:ActionList.rarWPF DataGriw采用编辑模式,用户可以双击最尾的空白行从而新加一条记录.也可以选择行记录后按键盘Del键来删除选择的记录,做完一系列的操作后一次性把数据都保存到远程数据库中.那在MVVM中Ui和后台是分离的.不能直接知道那样那数据是新加\还是修改\有那些数据是被删除的了.那当前操作的集合表面保存的数据就不一定是这次一系列所有操作的数据.那只是操作过后所要保留下来的数据而以.为了触屏这样子的问题很多人一般都会写多几个按钮(如下图).把相应的操作都进行记录下来.这本来也不是什么不好的解决方法.但要是DataGrid这控件本来就是使用方便.管理数据还要这么多 阅读全文

一步一步分析Caliburn.Micro(二:绑定执行方法Message现学现卖之自定命令)

2012-08-17 10:12 by 旦旦, 2515 阅读, 收藏, 编辑
摘要: 还记得上章中说到的CM演示程序中出现的cal:Message.Attach="[Key Enter] = [EnterPressed]" 吗?在分析代码中可是见不到Key这个事件触发关键字的.看看CM是怎么允许让我们在适当的范围内修改吧.打开在官网上下载的原代码的samples目录下Caliburn.Micro.KeyBinding方案.打开解决方案发现项目很简洁没什么文件.KeyBindingBootstrapper.cs 对这个委托的重写会不会觉得让人觉得很特别呢.看上去很不习惯呢.让我们以一个正常的重写代码.演示下这段代码protected override Trig 阅读全文

一步一步分析Caliburn.Micro(一:绑定执行方法Message)

2012-08-15 11:34 by 旦旦, 5451 阅读, 收藏, 编辑
摘要: 分析扩展类Message.Attach前我们现以标准MVVM的形式看下,通过比较才会知道CM带来的方便.下面用的例子都为CM源码中找出来的代码段.cal:Message.Attach="DeactivateItem($dataContext, 'true')"cal:Message.Attach="[Key Enter] = [EnterPressed]"cal:Message.Attach="[Event MouseDoubleClick] = [Action ShowView]; [Event Click] = [Actio 阅读全文

一步一步分析Caliburn.Micro框架(序)

2012-08-14 10:26 by 旦旦, 4665 阅读, 收藏, 编辑
摘要: Caliburn.Micro(多数人叫CM)是一个开源的MVVM开发框架,主要应用范围是WPF\Silverlight\WinPhone以Xaml为UI的开发框架.与众多的MVVM框架相比较.个人觉得CM是我用得最习惯最快捷的一个框架.让人的感觉到不会像微软的prism很大很臃肿,又不像MvvmLight轻巧到只有几个文件只能做简单的MVVM功能.与我一起用过CM的同事都说这个框架用起来很方便.直接实例对象然后放到一个WindowsManager的类或.Conductor<IShell>.Collection.OneActive继承类上的特定方法就可以与UI自动绑定(虽然用的是命名 阅读全文

不用ADOX.CatalogClass创建Access数据库文件

2012-08-02 16:18 by 旦旦, 4274 阅读, 收藏, 编辑
摘要: 由于项目须要动态创建Access数据库,网上现在所有创建Access文件的方法都是采用ADOX.CatalogClass这个方法不是不好,但我只是为了创建一个文件而以,然后的表\视图都可以通过Sql语句来创建的.觉得根本没有必要引用COM组件,大家都知道COM组件是Window下才能使用的.如果项目以后移植到Linux\Mac系统上的Mono平台上时就这个功能就废掉了(虽然现在Mono连接Access比较麻烦主要是非Window平台没有Microsoft.Jet.OLEDB,从而要下载MDB Tools才能使用非Window平台访问Access,所以一搬现在很多人在非Window系统下都会采用 阅读全文

C# LinQ 与 ADO.NET

2012-05-10 11:14 by 旦旦, 3939 阅读, 收藏, 编辑
摘要: 在本文LINQ中,匿名类型广泛使用与查询表达式中的select子句,它们返回查询序列中每个元素属性的子集.在本文中ADO.NET,指定DbDataAdapter所生成的DataTable。操作为两个DataTable的查询操作或两个IList的查询操作。场景主从表比对操作:上传的数据可能存在版本不一致,基础信息都不会有变化但扩展的表或字段会不存在,原因是客户端存在没有升级的情况。系统从Access数据库文件中取数据,使用整合后把相关数据并统计后对数据进行入库到系统数据库。部分的字段不能直接入库需要进行转换处理。由于数据库数据在进行操作时已经不会产生任何的变化。可以把数据都预先读取到内存当中。从 阅读全文

整理的C# 字符串类

2008-11-27 16:54 by 旦旦, 691 阅读, 收藏, 编辑
摘要: CodeCode highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.Runtime.InteropServices;n... 阅读全文

取远程网页数据 WebClient,HttpWebRequest

2008-11-10 11:29 by 旦旦, 4692 阅读, 收藏, 编辑
摘要: 修改版,由于取的网站多对应加了修正.我就没发新贴了.1,同一个用户(或浏览器)的不同请求共享同一个变量储存空间,就称其为Session(会话) Session内的变量保存在服务器中。 用SessionID以区别不同的Session(会话),因为不是一个用户在请求。 2,众所周知HTTP是无连接的,所以服务端和客户端交流时协商好使用些什么标志来保持Session(会话)状态,于是出现了Cookie(... 阅读全文