Статические методы расширения

Возможный дубликат:
Можно ли добавить методы расширения к существующему статическому classу?

Есть ли способ добавить статический метод расширения для classа.

в частности, я хочу перегрузить Boolean.Parse, чтобы разрешить аргумент int.

Короче говоря, нет, вы не можете.

Длительный ответ, методы расширения – это просто синтаксический сахар. IE:

Если у вас есть метод расширения в строке, скажем:

 public static string SomeStringExtension(this string s) { //whatever.. } 

Когда вы тогда называете это:

 myString.SomeStringExtension(); 

Компилятор просто превращает его в:

 ExtensionClass.SomeStringExtension(myString); 

Итак, как вы можете видеть, для статических методов нет способа сделать это.

И еще одна вещь, которая просто озарила меня: что на самом деле могло бы быть причиной добавления статических методов в существующие classы? У вас может быть только собственный class помощников, который делает то же самое, так что на самом деле преимущество в том, что вы можете сделать:

 Bool.Parse(..) 

против

 Helper.ParseBool(..); 

На самом деле это не приносит большого значения …

в частности, я хочу перегрузить Boolean.Parse, чтобы разрешить аргумент int.

Будет ли расширение для int работать?

 public static bool ToBoolean(this int source){ //do it //return it } 

Затем вы можете вызвать его так:

 int x = 1; bool y=x.ToBoolean(); 

Он не похож на вас. См. Здесь обсуждение

Я бы очень хотел, чтобы я был ошибочен.

Вы можете добавить метод расширения для int

 public static class IntExtensions { public static bool Parse(this int value) { if (value == 0) { return true; } else { return false; } } public static bool? Parse2(this int value) { if (value == 0) { return true; } if (value == 1) { return false; } return null; } } 

используется так

  bool bool1 = 0.Parse(); bool bool2 = 1.Parse(); bool? bool3 = 0.Parse2(); bool? bool4 = 1.Parse2(); bool? bool5 = 3.Parse2(); 

Нет, но у вас может быть что-то вроде:

 bool b; b = b.YourExtensionMethod(); 
  • Синтаксис методов расширения и синтаксиса запросов
  • Какова эффективность метода расширения Last () для List ?
  • Какие преимущества методов расширения вы нашли?
  • Устранение методов расширения / неопределенность LINQ
  • Отличный () с лямбдой?
  • Interesting Posts

    Как получить доступ к записи «Stereo Mix» в Vista?

    Компьютер загрузится, но монитор не включится до блокировки экрана

    WCF: Показывать только свойства DataMember без набора?

    Как определить направление движения между левым / правым и вверх / вниз

    Является ли инициализация статической членской переменной C ++ streamобезопасной?

    Объединить диск c: и d: пока диск D: имеет программные файлы

    Сортировка списка из другого идентификатора списка

    HTTPS-соединения через прокси-серверы

    Почему удобное ключевое слово даже необходимо в Swift?

    Установка Windows 10 не распознает жесткий диск Samsung 850 Evo m.2

    Лучшая практика для обработки исключений в приложении Windows Forms?

    Как отключить автоматическое извлечение DVD в Windows 7?

    Балансировка нагрузки с несколькими шлюзами

    Как мне сначала разделить мои таблицы в EF Code?

    Установка VirtualBox 5.0.10 на последнюю версию Windows 10 (версия 1511, 10586)

    Давайте будем гением компьютера.