2010-02-17 77 views
11

我想知道是否有方法使用Visual Studio 2005和2.0框架創建擴展方法?是否可以使用2.0框架創建擴展方法?

public static class StringExtensions 
{ 
    public static void SomeExtension(this String targetString) 
    { 

    } 
} 

如果沒有辦法做到這一點,等值是什麼?只需在某種庫類中創建靜態方法?

+0

您是否使用Visual Studio 2008或2005? – 2010-02-17 13:04:25

+0

我使用VS2005 – DevDemon 2010-02-17 13:06:57

+2

,那麼你運氣不好。 – 2010-02-17 13:13:43

回答

18

可以如果您使用C#3.0編譯器和Visual Studio 2008或更高版本,則使用.Net Framework 2.0創建擴展方法。

美中不足的是,你必須將此代碼添加到您的項目:

namespace System.Runtime.CompilerServices 
{ 
    public class ExtensionAttribute : Attribute { } 
} 

基本上你需要重新申報Core.dll的ExtensionAttribute(.NET 3.5 +),在您的項目。

+0

好的謝謝,所以它看起來可能與VS2008和2.0,但不是VS2005和2.0,謝謝! – DevDemon 2010-02-17 13:06:35

3

不,這在.Net 2.0中是不可能的(不使用C#3.0編譯器)。然而,你可以創建靜態方法來完成相同的事情:然而,

public static class StringExtensions 
{ 
    public static void SomeExtension(String targetString) 
    { 
     // Do things 
    } 
} 

// Example use: 
StringExtensions.SomeExtension(targetString); 

實際上,擴展方法只是寫上述的簡寫方法。

+0

它**是可能的...... – 2010-02-17 13:03:28

+0

@Andreas如果你使用C#3.0編譯器,這是*絕對*作弊。 – Justin 2010-02-17 13:05:19

+0

但可能...所以你的回答是錯誤的。這是真的,如果它聲明'這是不可能的使用.net 2.0編譯器' – 2010-02-17 13:06:14