2014-02-24 34 views
3

在c#控制台应用程序中,是否有方法通过Console.WriteLineConsole.Write将文本写入控制台时获取通知?获取事件挂钩到Console.WriteLine

每当这个事件触发,它应该是可以做到的事情,比如修改文字写入之前,它重定向到一个文件,或更改当前Console.ForegroundColor。

我知道一个简单的方法来完成,这是从来没有直接调用Console.WriteLine,而是随时拨打自己的定制包装方法。

另一个更好的方法是编写自定义ConsoleTraceListener,并通过trace.TraceInformation()输出所有文本。 我已经完成了,它工作得很好。

但是,如果Console.WriteLine命令调用另一个组件,其应保持不变这里面不起作用。

那么,有没有办法来Console.WriteLine呼叫作出反应,而无需修改,使这些调用的代码?

+0

您是否尝试将控制台标准输出重定向到您自己的流? –

+0

尝试使用Monkey修补Console.WriteLine,例如。 https://stackoverflow.com/questions/9684804/is-there-a-way-to-override-a-method-with-reflection我从来没有尝试过这个自己。 – MatthewMartin

回答

8

您可以使用Console.SetOut设置自定义Writer类。在这个类中,你可以创建自己的写功能。