Действительно ли возможно создать Дополнительные Методы с 2.0 Платформами?

Я задавался вопросом, существует ли способ создать дополнительные методы с помощью Visual Studio 2005 и 2,0 платформы?

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

    }
}

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

11
задан John Saunders 17 February 2010 в 13:04
поделиться

2 ответа

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

Загвоздка в том, что вам нужно добавить этот код в свой проект:

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

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

18
ответ дан 3 December 2019 в 05:33
поделиться

Я думаю, что на ваш вопрос отвечает следующее:

6,3,1,3 Подписанные и неподписанные целые числа

1 Когда значение с целым типом преобразован в другой целочисленный тип кроме _Bool, если значение может быть представленный новым типом, он без изменений.

2 В противном случае, если новый тип не подписан, значение равно преобразованы путем многократного добавления или вычитание на единицу больше максимального значение, которое может быть представлено в новый тип, пока значение не будет в диапазона нового типа.

3 В противном случае новый тип подписан, и значение не может быть представлен в нем; также результат определен для реализации или определяемый реализацией сигнал поднял.

-121--1512121-

Это в основном вопрос мнения, но в любом случае:

  1. Я бы не хотел, чтобы такая большая логика в представлении. Мы, наверное, все это сделали, но это становится беспорядочным быстро.
  2. Код небезопасен от будущих изменений, влияющих на глубину дерева.
  3. Вместо связанных переменных * _ name и * _ link я бы предложил использовать соответствующие объекты в любом случае с некоторыми функциональными возможностями link _ to .

Вы можете найти Эпизод 162 из Railscasts представляет интерес для хорошего решения, которое получает с

<% for page in @page.ancestors.reverse %>
  <%= link_to h(page.name), page %> &gt;
<% end %>
-121--2293355-

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

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

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

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

3
ответ дан 3 December 2019 в 05:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: