![](/img/trans.png)
[英]Is there a TextWriter interface to the System.Diagnostics.Debug class?
[英]Is there a TextWriter interface to the System.Diagnostics.Debug class, for use with Console.SetOut?
有沒有內置的可以將Console.WriteLine調用重定向到System.Diagnostic.Debug-calls?
我希望這樣的事情:
public static void CallNastyConsoleWriteLineUsingFunction() {
Console.WriteLine(GetImportantInformation());
}
[...]
var writer = DebugTextWriter();
TextWriter stdout = Console.Out;
try
{
Console.SetOut(writer);
CallNastyConsoleWriteLineUsingFunction();
}
finally
{
Console.SetOut(stdout);
}
或者甚至可能:
using(new ConsoleToDebugRedirector())
{
CallNastyConsoleWriteLineUsingFunction();
}
你可以這樣做:
public class Program
{
public static void Main(string[] args)
{
using (new ConsoleRedirect<DebugTextWriter>())
{
Console.WriteLine("Testing testing...");
}
Console.WriteLine("Testing testing 2...");
Console.ReadLine();
}
}
public class ConsoleRedirect<T> : IDisposable
where T : TextWriter, new()
{
private readonly TextWriter _tmpTextWriter;
public ConsoleRedirect()
{
_tmpTextWriter = Console.Out;
Console.SetOut(new T());
}
public void Dispose()
{
Console.SetOut(_tmpTextWriter);
}
}
public class DebugTextWriter : TextWriter
{
public override void WriteLine(string value)
{
Debug.WriteLine(value);
}
public override void WriteLine(object value)
{
Debug.WriteLine(value);
}
public override void WriteLine(string format, params object[] arg)
{
Debug.WriteLine(format, arg);
}
public override Encoding Encoding
{
get { return Encoding.UTF8; }
}
}
它將在using
語句中將所有Console.WriteLine
調用重定向到Debug.WriteLine
。 覆蓋TextWriter
所有write方法非常麻煩,但你可以在這個答案中使用包裝器
你可以反過來。 使用標准的調試/跟蹤調用,並將ConsoleTraceListener類添加到您的配置中。 凈效應應與標准編碼/行為相同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.