Если вы говорите о «расширении» статических методов (или замене существующих), то, насколько я знаю, нет, вы не можете это сделать, и я не уверен, почему вы захотите.
Суть методов расширения такова, что стиль вызова - это стиль вызова метода в экземпляре. Это позволяет, среди прочего, более элегантный синтаксис и цепочку методов. LINQ без методов расширения будет ужасно болезненным, например.
У вас есть три варианта, один из которых чрезвычайно ужасен:
Создание обычного метода расширения, который вызывает статический метод
public static string SomeExtensionMethod(this string name)
{
return string.Format("Hi:{0}", name);
}
Использование:
Console.WriteLine("Mr Smith".SomeExtensionMethod());
Создайте статический вспомогательный класс и сделайте вызов, используя этот
Console.WriteLine(MyHelperClass.SomeMethod("Mr Smith"));
И злой
Создайте статический вспомогательный класс с тем же именем, что и тип, который вы хотите «расширить» (например, общедоступный класс String) ... затем продублируйте сигнатуру статического целевого метода (Format) и наблюдайте, как все плачут от горячих соленых слез путаницы, когда они видят тип с именем «string», который не входит в пространство имен «System», и им приходится разбирать свой файл .cs с использованием String = MyCrazyHacks.String и / или явных пространств имен.
Я даже не уверен, что вы могли бы сделать это для «строки», так как это псевдоним для System.String, поэтому я изменил пример, чтобы использовать вместо него имя «String».
namespace MyCrazyHacks
{
public static class String
{
public static System.String Format(
System.String str, params object[] zeParams)
{
// do bad, unspeakable things that confuses everyone
return System.String.Format(....);
}
}
}
Примечание: пожалуйста, не делайте этого, потому что вы будете причинять большие страдания ...