c#之扩展方法是个好方法,可惜只在.net framework 3.5及以上版本中用。
2.0版本若用,其编译报错如下:
错误 无法定义新的扩展方法,因为找不到编译器所需的类型“System.Runtime.CompilerServices.ExtensionAttribute”。是否缺少对 System.Core.dll 的引用?
那怎么办呢?
工程中加个文件,加其代码如下:
namespace System.Runtime.CompilerServices
{
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class | AttributeTargets.Assembly)]
public sealed class ExtensionAttribute : Attribute
{
}
}
需要注意的是:若程序集中引用了Newtonsoft.Json.Net20.dll这个库,则可能会有如下错误:
缺少编译器要求的成员“System.Runtime.CompilerServices.ExtensionAttribute..ctor”
删除重引用就是了。
那么可以做扩展验证,比如给整型int加入一扩展方法,变为负数:
public static class Utils
{
public static int ToNeg(this int v)
{
return -v;
}
}
即可做如下使用:
int i = ;
Console.WriteLine(i.ToNeg());
的确是非常便捷。
参考资料:
c# - Using extension methods in .NET 2.0? - Stack Overflow
C# Extension methods in .NET 2.0 - Stack Overflow
c# - Extension Method in .net 2.0 in VS2008 - Stack Overflow
缺少编译器要求的成员“System.Runtime.CompilerServices.ExtensionAttribute..ctor” 解决方案 - ChineseMoonGod - 博客园