如果您正在谈论“扩展”静态方法(或替换现有方法),那么据我所知,不,您不能这样做,我不确定您为什么要这样做。
扩展方法的要点是调用风格是对实例的方法调用。它允许更优雅的语法和方法链接等。例如,没有扩展方法的 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)……然后复制静态目标方法的签名(格式),然后看着每个人在看到名为“string”的类型不是来自“System”命名空间,他们必须使用 String=MyCrazyHacks.String 和/或显式命名空间来分散他们的 .cs 文件。
我什至不确定您是否可以对“字符串”执行此操作,因为它是 System.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(....);
}
}
}
注意:请不要这样做,因为你会造成很大的痛苦......