本帖最后由 aimeast 于 2010-02-16 21:06:12 编辑

解决方案 »

  1.   

    msdn已经说了
    通常,建议您只在不得已的情况下才实现扩展方法,并谨慎地实现。只要有可能,必须扩展现有类型的客户端代码都应该通过创建从现有类型派生的新类型来达到这一目的。有关更多信息,请参见继承(C# 编程指南)。 
      

  2.   

    扩展方法无法帮助我们建立一个清楚的版本控制机制,因为一旦在被扩展的类型中添加了一个匹配的签名,就会将现有的扩展方法覆盖,而且不会发出警告。如果对被扩展的类的源代码没有控制权,这个问题还会变得更加突出。
    另外一个问题在于,虽然Visual Studio的“智能感知”功能支持扩展方法,但假如只是查看调用代码(也就是调用了扩展方法的代码),是不易看出一个方法是不是扩展方法的。总而言之,要慎用扩展方法。
    ---- 《C#本质论》