2009-10-31 22 views
23

this question'a bakarken yanıtları, istenen işlevselliği içeren System.Console için bir uzantı yöntemi yazmanın iyi bir fikir olacağını düşündüm.Konsol için uzatma yöntemleri yazmak mümkün mü?

using System; 
using System.Runtime.CompilerServices; 

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

    } 
} 
: Burada

kod parametreleri gibi statik tipleri kullanılamaz olabilir: Ben çalıştı

Ancak, bu derleyici hatası

System.Console 'var

Statik türleri için uzantı yöntemleri oluşturmanın başka bir yolu var mı? Yoksa bu mümkün değil mi?

cevap

15

Bu mümkün değildir.

Geçici bir çözüm olarak, Konsolun istenen işlevselliği ekleyerek sarmalayacağı statik bir sınıf oluşturabilirsiniz.

ConsoleEx.WriteLineRed("[ERROR]") 
: O herhangi biri (ehm) teselli olacaksa

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

O terbiyeli iyi o küçük "Ex" eklemek zorunda olduğu, ideal değil ama kodu ile akar

İlgili konular