2010-02-17 79 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