.NET Framework 从2.0升级至3.0/3.5中,增加了不少编译器级别的语法糖,如var关键字、自动属性、Lambda表达式、扩展方法等等。
如果使用vs2008发布.net2.0程序时,除了扩展方法外,其它的语法糖基本上都可以直接使用。但如果发布带扩展方法的程序则会编译出错。究其原因,是因为编译器将那些方法(扩展方法)带上ExtensionAttribute属性, 而ExtensionAttribute这个类却存在于.NET Framework 3.5的程序集中。
使用一个小技巧即可以使得带扩展方法的程序在.NET Framework 2.0/3.0时通过编译:自己定义这个ExtensionAttribute属性
namespace System.Runtime.CompilerServices
{
public
class
ExtensionAttribute : Attribute { }
}
这样, 即使不引用3.5版本的程序集, 也可以享受扩展方法带来的便利!