虽然关于null的一切争论永不停息,但根据实际开发经历,很多时候需要判断无聊的null,并且有些的判断是可有可无的,尤其是在表现层. string e = null; if (e != null) { Console.WriteLine(e.ToString()); } 上述代码如果能换成这样是不是更好: e = null; Console.WriteLine(e.ToString(false));//不要报异常 利用.net自带的缺省参数(.net4)和扩展方法等特性,下面是完整代码: cla…
三.将基于Nullable<T>的类型转换实现在扩展方法中 从上面的介绍我们可以得出这样的结论:如果类型T1和T2能够相互兼容,我们可以借助Convert将T1类型对象转换成T2类型,然后通过显式类型转换进一步转换成Nullable<T2>.我们可以通过这两个步骤实现针对于Nullable<T>类型的转换.为了操作方便,我将此转换逻辑写在针对IConvertible接口的扩展方法中: 1: public static class ConvertionExtensions…
装饰器模式体现了一种“组合优于继承”的思想.当我们要动态为对象增加新功能时,装饰器模式往往是我们的好帮手. 很多后期出现的 Ioc 容器都为装饰器模式提供了支持,比如说 Autofac.在 My.Ioc 中,默认不提供装饰器支持,但我们可以自己进行扩展,以提供此项功能. using System; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using My.Ioc; u…