C#装饰控制台课程

时间:2016-09-17 17:55:54

标签: c# design-patterns console

我遇到了一个装饰Console类(在C#中)的任务,并在Write和WriteLine方法中实现了一些自定义的东西。

我对装饰流提供额外功能没有任何问题,但我不知道如何装饰控制台,主要是因为它是静态的(并且没有继承,只有System.Object)。 / p>

那么这里有什么可能性呢?

谢谢! 卢卡斯

1 个答案:

答案 0 :(得分:0)

您可以使用Console.SetOut(TextWriter)Console.SetIn(TextReader)Console.SetError(TextWriter)替换流Console写入和读取。只需创建执行装饰器行为的自定义TextWriterTextReader类,并将它们分配给静态方法。

public static void Main()
{
    TextWriter oldOut = Console.Out;
    TextWriter decorator = new MyCustomDecorator(oldOut);
    Console.SetOut(decorator);

    //Do stuff;
}