我需要关于如何让C#控制台应用程序通过标准输出向用户显示文本的建议,同时仍然可以访问它.我想实现的实际功能是在程序执行结束时将整个输出缓冲区转储到文本文件.
当我没有找到更清洁的方法时,我使用的解决方法是将TextWriter子类化覆盖写入方法,以便他们都可以写入文件并调用原始的stdout writer.这样的事情
public class DirtyWorkaround { private class DirtyWriter : TextWriter { private TextWriter stdoutWriter; private StreamWriter fileWriter; public DirtyWriter(string path,TextWriter stdoutWriter) { this.stdoutWriter = stdoutWriter; this.fileWriter = new StreamWriter(path); } override public void Write(string s) { stdoutWriter.Write(s); fileWriter.Write(s); fileWriter.Flush(); } // Same as above for WriteLine() and WriteLine(string),// plus whatever methods I need to override to inherit // from TextWriter (Encoding.Get I guess). } public static void Main(string[] args) { using (DirtyWriter dw = new DirtyWriter("path",Console.Out)) { Console.SetOut(dw); // Teh codez } } }
看到它一直写入和刷新文件.我只想在执行结束时才做,但是找不到任何方式访问输出缓冲区.
另外,以上代码的借口不准确(不得不写得特别,抱歉).