Search code examples
c#staticextension-methods

Can I add extension methods to an existing static class?


I'm a fan of extension methods in C#, but haven't had any success adding an extension method to a static class, such as Console.

For example, if I want to add an extension to Console, called 'WriteBlueLine', so that I can go:

Console.WriteBlueLine("This text is blue");

I tried this by adding a local, public static method, with Console as a 'this' parameter... but no dice!

public static class Helpers {
    public static void WriteBlueLine(this Console c, string text)
    {
        Console.ForegroundColor = ConsoleColor.Blue;
        Console.WriteLine(text);
        Console.ResetColor();
    }
}

This didn't add a 'WriteBlueLine' method to Console... am I doing it wrong? Or asking for the impossible?


Solution

  • No. Extension methods require an instance variable (value) for an object. You can however, write a static wrapper around the ConfigurationManager interface. If you implement the wrapper, you don't need an extension method since you can just add the method directly.

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