小编典典

我可以将扩展方法添加到现有的静态类吗?

all

我是 C# 中的扩展方法的粉丝,但在将扩展方法添加到静态类(例如Console.

例如,如果我想添加一个扩展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‘ 方法来Console......我做错了吗?还是要求不可能的事?


阅读 228

收藏
2022-03-06

共1个答案

小编典典

不可以。扩展方法需要一个对象的实例变量(值)。但是,您可以在接口周围编写一个静态包装器ConfigurationManager。如果您实现包装器,则不需要扩展方法,因为您可以直接添加方法。

 public static class ConfigurationManagerWrapper
 {
      public static ConfigurationSection GetSection( string name )
      {
         return ConfigurationManager.GetSection( name );
      }

      .....

      public static ConfigurationSection GetWidgetSection()
      {
          return GetSection( "widgets" );
      }
 }
2022-03-06