我遇到了一个装饰Console类(在C#中)的任务,并在Write和WriteLine方法中实现了一些自定义的东西。
我对装饰流提供额外功能没有任何问题,但我不知道如何装饰控制台,主要是因为它是静态的(并且没有继承,只有System.Object)。 / p>
那么这里有什么可能性呢?
谢谢! 卢卡斯
答案 0 :(得分:0)
您可以使用Console.SetOut(TextWriter)
,Console.SetIn(TextReader)
和Console.SetError(TextWriter)
替换流Console
写入和读取。只需创建执行装饰器行为的自定义TextWriter
或TextReader
类,并将它们分配给静态方法。
public static void Main()
{
TextWriter oldOut = Console.Out;
TextWriter decorator = new MyCustomDecorator(oldOut);
Console.SetOut(decorator);
//Do stuff;
}