是否可以使用2.0 Framework创建扩展方法?

时间:2010-02-17 12:55:41

标签: c# extension-methods

我想知道是否有办法使用Visual Studio 2005和2.0框架创建扩展方法?

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

    }
}

如果没有办法做到这一点,相同的是什么?只需在某种库类中创建静态方法吗?

2 个答案:

答案 0 :(得分:18)

如果使用C#3.0编译器和Visual Studio 2008或更高版本,可以使用.Net framework 2.0创建扩展方法。

需要注意的是,您必须将此代码添加到项目中:

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

基本上你需要在你的项目中重新声明Core.dll(.Net 3.5 +)中的ExtensionAttribute。

答案 1 :(得分:3)

不,这在.Net 2.0中是不可能的(不使用C#3.0编译器)。您可以创建完全相同的静态方法:

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

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

实际上,扩展方法只是编写上述内容的简便方法。