WEB开发网
开发学院软件开发C语言 c#扩展方法奇思妙用高级篇八:Type类扩展 阅读

c#扩展方法奇思妙用高级篇八:Type类扩展

 2010-09-30 21:06:23 来源:WEB开发网   
核心提示: 代码就是最好的文档,想必大家已经都看明白了,c#扩展方法奇思妙用高级篇八:Type类扩展(3),TypeHelper 是我从一个类库中提取的,它原本是一个 internal static class,type1为空,type2则是一个少见的奇怪类型,内部的方法同样 internal static

代码就是最好的文档,想必大家已经都看明白了。

TypeHelper 是我从一个类库中提取的,它原本是一个 internal static class,内部的方法同样 internal static 。我仅仅是把 internal 改成了 public ,并在每个方法的第一个参数前加了个 this,最后给类中的方法按从简到难的顺序进行了排序。

也许是因为 TypeHelper 是一个内部类,并有强烈的应用语境,TypeHelper 并没有采用契约式编程的方式,甚至在命名上也做了一些省略: 如 IsEnumerableType、GetElementType 两个方法是实际是用来处理泛型集合类型的,但在方法名和参数名上并没有“Generic”的字眼。(如果传入非泛型类型或其它类型,将会产生难以预料的结果或异常。)

像这样简单将内部静态类 TypeHelper 中的静态方法公开为扩展方法是存在问题的,所以在应用之前,还得再做些工作。改进成为契约式编程的方式并不难,难的是给扩展方法起一个清晰明了简单易懂的名字,否则就不要扩展了。IsEnumerableType、GetElementType 应该体现出是对泛型集合进行操作,简单加上Generic字样后名字好长,也不好理解。(大家如果能想出好的名字,请发在回复中,不胜感激!)

另外在使用时,我发现两处“奇怪”的地方,如下图:

c#扩展方法奇思妙用高级篇八:Type类扩展

查看原图(大图)

调试至此处,type1为空,type2则是一个少见的奇怪类型。

TypeHelper 的出处我会在下一篇随笔中进行说明。

上一页  1 2 3 

Tags:扩展 方法 奇思

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接