Короче говоря, нет, вы не можете.
Длинный ответ, методы расширения - это просто синтаксический сахар. IE:
если у вас есть метод расширения строки, скажем:
public static string SomeStringExtension(this string s)
{
//whatever..
}
Когда вы затем вызвать его:
myString.SomeStringExtension();
компилятор просто превращает ее в
ExtensionClass.SomeStringExtension(myString);
Таким образом, вы можете видеть, что для статических методов нет способа сделать это.
И еще одна вещь, которая просто озарила меня: что действительно будет point быть в состоянии добавить статические методы в существующие классы? Вы можете просто иметь свой собственный вспомогательный класс, который делает то же самое, так что на самом деле benfit в возможности сделать:
Bool.Parse(..)
vs.
Helper.ParseBool(..);
ли на самом деле не много приносит к столу ...
, как это может быть дубликат? Это хочет добавить метод расширения, который ведет себя как статический (класс) метод к классу, который может иметь такие экземпляры, как Boolean, тогда как в другом вопросе спрашивается, как добавить метод расширения к статическому классу –
было бы неплохо, если бы поддерживался синтаксис C# например: «public static DependencyProperty Register (статический DependencyProperty x, имя строки, Type propertyType, Type ownerType, FrameworkPropertyMetadata typeMetadata)», чтобы я мог использовать его в Silverlight для обеспечения совместимости с синтаксисом WPF (чтобы обернуть внедрение принудительного значения Dr.WPF для DependencyProperty). Обратите внимание на параметр «статический DependencyProperty» вместо «this DependencyProperty» (альтернативно вместо статического, возможно, они могут использовать другое ключевое слово типа type или typeof). –
Такая же проблема с 'Enum.Parse' с предоставлением строки. К сожалению, расширение строки не так очевидно, как расширение int. C# отсутствует синтаксис! – C4u