【发布时间】:2014-02-24 12:38:04
【问题描述】:
在 c# 控制台应用程序中,有没有办法在通过 Console.WriteLine 和 Console.Write 将文本写入控制台时获得通知?
每当此事件触发时,应该可以执行一些操作,例如在写入之前更改文本、将其重定向到文件或更改当前的 Console.ForegroundColor。
我知道实现此目的的一个简单方法是永远不要直接调用Console.WriteLine,而是始终调用我自己的自定义包装方法。
另一种更好的方法是编写自定义ConsoleTraceListener,并通过trace.TraceInformation() 输出所有文本。
我已经这样做了,而且效果很好。
但是,如果 Console.WriteLine 调用位于另一个应保持不变的程序集中,则此方法不起作用。
那么有什么方法可以对Console.WriteLine 调用做出反应,而无需修改进行这些调用的代码?
【问题讨论】:
-
您是否尝试过将控制台标准输出重定向到您自己的流?
-
尝试猴子修补 Console.WriteLine,例如。 stackoverflow.com/questions/9684804/…我自己从未尝试过。
标签: c# windows console console.writeline tracelistener