2009-04-23 68 views
6

在Visual Studio 2008下
我可以创建扩展方法在.NET Framework 2.0项目下工作吗?在.NET Framework 2.0中使用扩展方法

+0

详情请参阅[我的博客](http://colins-corner.blogspot.com/2009/01/extension-methods-in-net-20.html)条目。 – 2009-04-23 19:26:55

回答

10

有一个ugly hack获取在.Net 2.0中工作的扩展方法;但最好将你的框架升级到3.5。

备选来源:1,2

总之(来自链接#2):扩展方法只是标有[Extension]属性的常规静态方法。这个属性实际上是由编译器在幕后添加的。在.NET 3.5中,它存在于System.Core中,因此只需定义像下面这样的属性:

namespace System.Runtime.CompilerServices 
{ 
    [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)] 
    public class ExtensionAttribute : Attribute 
    { 
    } 
} 
+0

链接已损坏我认为 – deostroll 2013-06-01 02:28:14

+0

@deostroll:已修复。 – 2013-06-02 20:30:56

2

绝对。有一些hacky方法,但我正在使用的是从Mono project中获取System.Core,并将其所有代码添加到我自己的解决方案中名为System.Core的新.NET 2.0类库中,然后重新编译它。有几件事需要解决,比如将他们的MonoTODO属性更改为TODO注释,并修复AssemblyInfo.cs,但效果很好。我现在同时使用LINQ,并在VS 2008

编译一个2.0的项目假设你得到了2.4版本的单源的扩展方法,你应该找到下代码:

<extracted directory>/mono-2.4/mcs/class/System.Core 

如果您'重新卡在VS 2005中,你可以下载SharpDevelop,构建你的System.Core DLL,目标为2.0,添加一个对已编译程序集的引用,它可以工作,但我不知道VS 2005是否会有问题与扩展语法或不。我想它会给你一些口水。