Можно ли создать методы расширения с 2.0 Framework? - PullRequest
11 голосов
/ 17 февраля 2010

Мне было интересно, есть ли способ создания методов расширения с использованием Visual Studio 2005 и платформы 2.0?

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

    }
}

Если нет способа сделать это, каким будет эквивалент? Просто создать статические методы в каком-то классе библиотеки?

Ответы [ 2 ]

18 голосов
/ 17 февраля 2010

Вы можете создавать методы расширения, используя .Net Framework 2.0, если вы используете компилятор C # 3.0 и Visual Studio 2008 или более позднюю версию.

Сложность в том, что вам нужно добавить этот кодк вашему проекту:

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

По сути, вам необходимо повторно объявить ExtensionAttribute в Core.dll (.Net 3.5 +), в вашем проекте.

3 голосов
/ 17 февраля 2010

Нет, это невозможно в .Net 2.0 (без использования компилятора C # 3.0). Вы можете просто создать статические методы, которые делают то же самое:

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

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

В действительности методы расширения - это всего лишь краткий способ написания вышеприведенного.

...