我是 C# 中的扩展方法的粉丝,但在将扩展方法添加到静态类(例如Console.
Console
例如,如果我想添加一个扩展Console名为 ‘ WriteBlueLine‘,这样我就可以去:
WriteBlueLine
Console.WriteBlueLine("This text is blue");
我通过添加一个本地的、公共的静态方法来尝试这个,Console作为一个’ this‘参数......但没有骰子!
this
public static class Helpers { public static void WriteBlueLine(this Console c, string text) { Console.ForegroundColor = ConsoleColor.Blue; Console.WriteLine(text); Console.ResetColor(); } }
这没有添加一个 ‘ WriteBlueLine‘ 方法来Console......我做错了吗?还是要求不可能的事?
不可以。扩展方法需要一个对象的实例变量(值)。但是,您可以在接口周围编写一个静态包装器ConfigurationManager。如果您实现包装器,则不需要扩展方法,因为您可以直接添加方法。
ConfigurationManager
public static class ConfigurationManagerWrapper { public static ConfigurationSection GetSection( string name ) { return ConfigurationManager.GetSection( name ); } ..... public static ConfigurationSection GetWidgetSection() { return GetSection( "widgets" ); } }