在查看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;
}
}
}
是否有另一种为静态类型创建扩展方法的方法?或者这是不可能的?
答案 0 :(得分:20)
不幸的是,不可能。见Static extension methods
有些人建议: http://madprops.org/blog/static-extension-methods/
...但它从来没有在.NET 4中完成。显然,扩展属性在某种程度上可以实现,但后来被放弃了。
https://blogs.msdn.com/ericlippert/archive/2009/10/05/why-no-extension-properties.aspx
答案 1 :(得分:20)
如Matt的回答所述,这是不可能的。
作为一种解决方法,您可以创建一个静态类,它将包装Console添加所需的功能。
public static class ConsoleEx
{
public static void WriteLineRed(String message)
{
var oldColor = Console.ForegroundColor;
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine(message);
Console.ForegroundColor = oldColor;
}
}
它并不理想,因为你必须添加那个小小的" Ex",但如果有任何(ehm)安慰,那么代码就会很好地流动:
ConsoleEx.WriteLineRed("[ERROR]")