2.0框架是否支持创建扩展方法?

11

我想知道在使用Visual Studio 2005和2.0框架时是否有一种创建扩展方法的方式?

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

    }
}

如果没有其他方法,那么相当的解决方案是什么?只需在某种库类中创建静态方法吗?


你正在使用Visual Studio 2008还是2005? - John Saunders
2
那么你就没有好运了。 - John Saunders
2个回答

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。


好的,谢谢。看起来在VS2008和2.0版本中是可能的,但在VS2005和2.0版本中不行。谢谢! - DevDemon

3
不,这在 .Net 2.0 中是不可能实现的(除非使用 C# 3.0 编译器)。但是您可以创建静态方法来完成完全相同的操作:
public static class StringExtensions
{
    public static void SomeExtension(String targetString)
    {
        // Do things
    }
}

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

实际上,扩展方法只是上述写法的简写方式。

@Andreas 如果你使用C# 3.0编译器会怎么样?那 绝对 是作弊。 - Justin
但是有可能……所以你的答案是错误的。如果它声明“使用 .net 2.0 编译器不可能”,那么它就是正确的。 - user57508

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接