2009-04-23 46 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是否會有問題與擴展語法或不。我想它會給你一些口水。

相關問題