1. ホーム
  2. c#

[解決済み] 既存の静的クラスに拡張メソッドを追加することはできますか?

2022-03-16 12:48:22

質問

私は 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 ...私のやり方が悪いのでしょうか?それとも、不可能なことを要求しているのでしょうか?

解決方法は?

拡張メソッドには、オブジェクトのインスタンス変数(値)が必要です。 ただし、静的なラッパーを記述して ConfigurationManager インターフェイスを使用します。 ラッパーを実装すれば、直接メソッドを追加すればよいので、拡張メソッドは必要ありません。

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

      .....

      public static ConfigurationSection GetWidgetSection()
      {
          return GetSection( "widgets" );
      }
 }