在同一过程中写入标准错误后,是否可以读取标准错误
本文关键字:错误 标准 是否 读取 过程中 | 更新日期: 2023-09-27 18:20:44
这是我尝试过的,但错误="
var streamReader = new StreamReader(Console.OpenStandardError());
Console.Error.WriteLine("An error has occurred");
Console.Error.Flush();
string error = streamReader.ReadToEnd();
目的是我需要为一个正在编写标准错误的类编写一个测试。我想检查正在编写的错误是否正确,但理想情况下我不想修改类本身。
我找到了一种方法。将Console.Error设置为截取正在写入的文本的扩展TextWriter。我只重写WriteLine(字符串),因为这就是我所需要的。
TextWriter oldWriter = Console.Error;
ErrorCapturer errorCapturer = new ErrorCapturer();
Console.SetError(errorCapturer);
Console.Error.WriteLine("An error has occured");
string error = errorCapturer.ReadToEnd();
Console.SetError(oldWriter);
class ErrorCapturer : TextWriter
{
string _buffer="";
public override void WriteLine(string line)
{
_buffer += line + Environment.NewLine;
base.WriteLine(line);
}
public string ReadToEnd()
{
string ret = _buffer;
_buffer = "";
return ret;
}
public override Encoding Encoding
{
get { return Encoding.ASCII; }
}
}