2009-10-31 4 views
23

Mentre guardavo allo this question e alle sue risposte ho pensato che sarebbe stata una buona idea scrivere un metodo di estensione per System.Console che contenesse la funzionalità desiderata.È possibile scrivere i metodi di estensione per Console?

Tuttavia, quando ho provato, ho ottenuto questo errore del compilatore

System.Console ': tipi statici non possono essere utilizzati come parametri

Ecco il codice:

using System; 
using System.Runtime.CompilerServices; 

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

    } 
} 

Esiste un altro modo per creare metodi di estensione per tipi statici? O questo non è possibile?

risposta

15

non è possibile, come indicato nella risposta di Matt.

Come soluzione alternativa, è possibile creare una classe statica che avvolgerà la console aggiungendo la funzionalità desiderata.

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

Non è l'ideale, come si deve aggiungere che piccolo "Ex", ma scorre con il codice decentemente bene, se questo è qualsiasi (ehm) consolazione:

ConsoleEx.WriteLineRed("[ERROR]")