2009-10-31 20 views
23

Während ich auf this question und seine Antworten schaue, dachte ich, dass es eine gute Idee wäre, eine Erweiterungsmethode für System.Console zu schreiben, die die gewünschte Funktionalität enthielt.Ist es möglich, Erweiterungsmethoden für Console zu schreiben?

Allerdings, wenn ich es versuchte, bekam ich diesen Compiler-Fehler

System.Console ': statische Typen können nicht verwendet werden als Parameter

Hier ist der Code ist:

using System; 
using System.Runtime.CompilerServices; 

namespace ConsoleApplication1 
{ 
    public static class ConsoleExtensions 
    { 
     [Extension] 
     public static string TestMethod(this Console console, string testValue) 
     { 
      return testValue; 
     } 

    } 
} 

Gibt es eine andere Möglichkeit, Erweiterungsmethoden für statische Typen zu erstellen? Oder ist das einfach nicht möglich?

Antwort

15

Es ist nicht möglich, da in Matts Antwort erwähnt.

Als Workaround könnten Sie eine statische Klasse erstellen, die Console mit der gewünschten Funktionalität umschließt.

public static class ConsoleEx 
{ 
    public static void WriteLineRed(String message) 
    { 
     var oldColor = Console.ForegroundColor; 
     Console.ForegroundColor = ConsoleColor.Red; 
     Console.WriteLine(message); 
     Console.ForegroundColor = oldColor; 
    } 
} 

Es ist nicht ideal, wie Sie das kleine "Ex" hinzufügen müssen, sondern fließt mit Code anständig gut, wenn das jeder (ehm) Trost:

ConsoleEx.WriteLineRed("[ERROR]") 
Verwandte Themen