摘要:四,设计支持加载项的应用程序 构建可扩展应用程序时,接口是中心。可以利用基类来代替接口,但接口通常是首选,因为它允许加载项开发人员选择他们自己的基类。下面描述了如何构建这样的应用程序。1,创建一个“宿主SDK”(Host SDK)程序集。它定义一个接口,接口的方法作为宿主应用程序和加载项应用程序之间的通信机制使用。接口的参数和返回类型,尝试使用MSCorLib.dll中定义的类型或接口。如果要传递并返回自己定义的数据类型,也应该在这个“宿主SDK”程序集中定义。一旦搞定接口的定义,就可以为这个程序集赋一个强名称(版本控制),然后把它打包并部署到合作伙伴或用户那里。一旦发布就应避免对该程序集的做 阅读全文
《CLR via C#》笔记——程序集的加载和反射(1)
2012-07-16 17:25 by xiashengwang, 2570 阅读, 3 推荐, 收藏, 编辑
摘要:一,程序集加载 JIT编译器在将IL代码编译成本地代码时,会查看IL代码中引用了那些类型。在运行时,JIT编译器利用程序集的TypeRef和AssemblyRef元数据表的记录项来确定哪一个程序集定义了引用的类型。在AssemblyRef元数据记录项中记录了程序集强名称的各个部分—包括名称,版本,公钥标记和语言文化。这四个部分组成了一个字符串标识。JIT编译器尝试将与这个标识匹配的程序集加载到当前的AppDomain中。如果程序集是弱命名的,标识中将只包含名称。1,Assembly的Load方法 在内部CLR使用Assembly的Load方法来加载这个程序集,这个方法与Win32的LoadLi 阅读全文
sscli2.0(Rotor) win7+vs2008编译
2012-07-01 23:19 by xiashengwang, 485 阅读, 0 推荐, 收藏, 编辑
摘要:一,下载sscli2.0http://www.microsoft.com/en-us/download/details.aspx?id=4917二,编译sscli2.0需要安装Perlhttp://www.activestate.com/Products/ActivePerl/一路安装即可。三,解压sscli2.0后,需要修改一些文件,具体可参考这篇blog:http://blogs.msdn.com/b/jeremykuhne/archive/2008/02/19/sscli-2-0-and-visual-studio-2008.aspx唯一还要修改一个地方的是,打开env.core.pl文 阅读全文
log4net使用总结
2012-06-20 17:08 by xiashengwang, 872 阅读, 0 推荐, 收藏, 编辑
摘要:一,log4net是什么 log4net架构下用于记录日志的开源组件,功能相当完善,免去了我们重复造轮子。我想不管是winform还是web都需要记录日志。 官网下载地址:http://logging.apache.org/log4net/ SDK地址:http://logging.apache.o 阅读全文
SQL批量数据导入,性能测试
2012-06-15 17:49 by xiashengwang, 418 阅读, 0 推荐, 收藏, 编辑
摘要:1,第一种方法,循环插入在循环里,用insert语句,注意要加上begin tran 和commit tran 否则慢的吓人。原因可能是每次发行事务需要开销,不显示指定事务,每次执行insert语句都会发行一次事务。if OBJECT_ID('t_sample') is nullbegin create table t_sample ( id varchar(10) not null primary key, txt varchar(10));endgodelete from t_sample;declare @count int;set @count =1;begin tra 阅读全文
装饰模式
2012-06-08 17:30 by xiashengwang, 252 阅读, 0 推荐, 收藏, 编辑
摘要:一,概念摘自TerryLee的博客(http://terrylee.cnblogs.com/archive/2006/03/01/340592.html)概述在软件系统中,有时候我们会使用继承来扩展对象的功能,但是由于继承为类型引入的静态特质,使得这种扩展方式缺乏灵活性;并且随着子类的增多(扩展功能的增多),各种子类的组合(扩展功能的组合)会导致更多子类的膨胀。如何使“对象功能的扩展”能够根据需要来动态地实现?同时避免“扩展功能的增多”带来的子类膨胀问题?从而使得任何“功能扩展变化”所导致的影响将为最低?这就是本文要讲的Decorator模式。意图动态地给一个对象添加一些额外的职责。就增加功能 阅读全文
通用的泛型Icomparer生成类,对类进行排序,最大支持4个字段同时比较
2012-06-07 15:18 by xiashengwang, 346 阅读, 0 推荐, 收藏, 编辑
摘要:一,通常我们自己定义一个类,然后对类的集合进行排序,是下面这样的做法 class People { public int ID { get; set; } public string Name { get; set; } public DateTime Birthday { get; set; } public override string ToString() { return string.Format("{0},{1},... 阅读全文
扩展方法及几种常见的代理(delegate)语法
2012-06-05 11:27 by xiashengwang, 388 阅读, 0 推荐, 收藏, 编辑
摘要:1,扩展方法必须写在非泛型的静态类中using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Windows.Forms;namespace Cshapr3._0NewFeature{ public static class ExtendMethod { //Search Control's Child public static IEnumerable<T> SearchControls<T>(this Control c... 阅读全文
Excel单元格列名转化成函数
2012-03-20 21:17 by xiashengwang, 559 阅读, 0 推荐, 收藏, 编辑
摘要:/// <summary> /// Excel形式的列变换 /// </summary> public class ExcelCRHelper { private const string ALPHABET_UPPER = "ABCDEFGHIGKLMNOPQRSTUVWXYZ"; /// <summary> /// 形如(B4)的单元格的列号提取 /// </summary> /// <returns></returns> public static int ExtractCol... 阅读全文
winForm 国际化的简单实现
2011-12-23 14:17 by xiashengwang, 670 阅读, 0 推荐, 收藏, 编辑
摘要:国际化就是要实现多语种的界面切换。首先,我们不可能用if else等语句来根据选择的不同语种对所有的控件一个一个的设值,这样太麻烦了。.Net提供了国际化相关的支持,主要放在System.Globalization命名空间下。下面是一个简单的实现,麻雀虽小,五脏俱全。这个程序是最近写的一个程序,就在这基础上进行改造,关键是弄懂原理。1> 首先要加入Resource文件在VS工程-->添加新项目里加入三个resource文件,Resource文件的作用就是存放我们的界面控件的显示字符串。这里我们要实现3种语言的切换,所有加入了3个,分别命名为:Resource.en-US.resx, 阅读全文