我正在编写一个将数据导出到CSV文件的类,其构造函数接受TextWriter。我之所以使用TextWriter而不是StreamWriter,是为了让测试更容易:我可以使用相同的构造函数来写入StreamWriter(写入文件,这是预期的用例)和StringWriter(这对测试很有用)。
在我的构造函数中,我想对传入的TextWriter执行一些验证。问题是,我似乎不知道如何检查TextWriter是打开还是关闭。如果BaseStream属性为null,则StreamWriter可能会出现这种情况。但是,TextWriter没有此属性。是否有其他方法可以检查TextWriter是否打开?
您可以这样尝试:
if( writer.BaseStream != null)
{
writer.WriteLine("Writer is open");
}
else
{
MessageBox.Show ("Writer is closed");
}
即,如果BaseStream
为NULL,则写入程序已被释放。
此外,建议使用using
块来处理此问题。