获取Console.WriteLine的事件挂钩

时间:2014-02-24 12:38:05

标签: c# windows console console.writeline tracelistener

在c#控制台应用程序中,有没有办法通过Console.WriteLineConsole.Write将文本写入控制台时收到通知?

每当此事件触发时,应该可以执行诸如在写入文本之前更改文本,将其重定向到文件或更改当前Console.ForegroundColor。

我知道一个简单的方法是永远不要直接调用Console.WriteLine,而是总是调用我自己的自定义包装器方法。

另一种更好的方法是编写自定义ConsoleTraceListener,并通过trace.TraceInformation()输出所有文字。 我已经做到了,它运作得很好。

但是,如果Console.WriteLine调用位于另一个应保持不变的程序集内,则不起作用。

那么有没有办法对Console.WriteLine次调用作出反应而不修改进行这些调用的代码?

1 个答案:

答案 0 :(得分:8)

您可以使用Console.SetOut设置自定义Writer类。在本课程中,您可以创建自己的写入功能。