我可以向现有的静态类添加扩展方法吗?
我很喜欢C#中的扩展方法,但在将扩展方法添加到静态类(例如Console)方面并没有取得成功。
例如,如果我想向控制台添加一个名为“ WriteBlueLine”的扩展,以便可以进行以下操作:
Console.WriteBlueLine("This text is blue");
我通过添加一个本地的,公共的静态方法(使用Console作为“ this”参数)来尝试了此操作……但是没有骰子!
public static class Helpers { public static void WriteBlueLine(this Console c, string text)
{
Console.ForegroundColor = ConsoleColor.Blue;
Console.WriteLine(text);
Console.ResetColor();
}
}
这没有向控制台添加’WriteBlueLine’方法…我做错了吗?还是要求不可能?
回答:
不能。扩展方法需要对象的实例变量(值)。但是,您可以在ConfigurationManager
接口周围编写静态包装。如果实现包装器,则不需要扩展方法,因为可以直接添加该方法。
public static class ConfigurationManagerWrapper {
public static ConfigurationSection GetSection( string name )
{
return ConfigurationManager.GetSection( name );
}
.....
public static ConfigurationSection GetWidgetSection()
{
return GetSection( "widgets" );
}
}
以上是 我可以向现有的静态类添加扩展方法吗? 的全部内容, 来源链接: utcz.com/qa/412569.html