2009-10-31 43 views
23

虽然看着this question和它的答案,我认为这是一个好主意,编写System.Console扩展方法包含所需的功能。是否可以为控制台编写扩展方法?

然而,当我尝试了,我得到这个编译器错误

System.Console“:静态类型不能 作参

下面的代码:

using System; 
using System.Runtime.CompilerServices; 

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

    } 
} 

是否有另一种方法为静态类型创建扩展方法?或者这是不可能的?

回答

15

这是不可能的,因为在马特的答复中提到。

作为一种解决方法,您可以创建一个静态类,它将包装控制台添加所需的功能。

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

这不是理想的,因为你必须增添了一“前”,但与代码流体面很好,如果这是任何(EHM)安慰:

ConsoleEx.WriteLineRed("[ERROR]") 
相关问题