我很喜欢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接口周围编写静态包装。如果实现包装器,则不需要扩展方法,因为可以直接添加该方法。
ConfigurationManager
public static class ConfigurationManagerWrapper { public static ConfigurationSection GetSection( string name ) { return ConfigurationManager.GetSection( name ); } ..... public static ConfigurationSection GetWidgetSection() { return GetSection( "widgets" ); } }