Puis-je ajouter une extension des méthodes à une classe statique?

Je suis un fan de méthodes d'extension en C#, mais je n'ai pas eu tout le succès de l'ajout d'une extension de la méthode à une classe statique, comme Console.

Par exemple, si je veux ajouter une extension à la Console, appelée "WriteBlueLine", de sorte que je peux aller:

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

J'ai essayé en ajoutant un local, méthode statique publique, de la Console en tant que 'ce paramètre... mais pas de dés!

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

Cela n'a pas ajouter un "WriteBlueLine' méthode de la Console... suis-je le fais mal? Ou demander l'impossible?

  • Oh bien. regrettable, mais je pense que je vais m'en sortir. Je suis ENCORE une extension de la méthode de la vierge (dans le code de production de toute façon). Peut-être un jour, si j'ai de la chance.
  • J'ai écrit un certain nombre de HtmlHelper extensions pour ASP.NET MVC. A écrit un pour DateTime pour me donner la fin de la date donnée (23:59.59). Utile lorsque vous demandez à l'utilisateur de spécifier une date de fin, mais vraiment le vouloir pour être la fin de la journée.
  • Il n'y a aucun moyen de les ajouter actuellement car la fonctionnalité n'existe pas en C#. Pas parce que c'est impossible en soi, mais parce que le C# peeps sont très occupés, étaient surtout intéressés par les méthodes d'extension pour faire LINQ travail et ne voit pas assez d'avantages statiques les méthodes d'extension pour justifier le temps qu'ils la prennent à mettre en œuvre. Eric Lippert explique ici.
  • Évidemment tout à fait un certain nombre de gens veulent cette fonctionnalité, même si elle n'est pas actuellement possible. Vous pouvez voter à UserVoice pour la fonction à être mis en œuvre.
  • Appelez simplement Helpers.WriteBlueLine(null, "Hi"); 🙂