Есть ли способ проверить, если TextWriter закрыт?
Я пишу класс, который экспортирует данные в файл CSV, и его конструктор принимает TextWriter. Причина, по которой я использую TextWriter, а не StreamWriter, заключается в том, что это облегчит тестирование: я могу использовать один и тот же конструктор для записи в StreamWriter (который записывает в файлы, предполагаемый сценарий использования) и для записи в StringWriter (что полезно для тестирования).
В моем конструкторе я хотел бы выполнить некоторую проверку переданного в TextWriter. Проблема в том, что я не могу понять, как проверить, открыт ли TextWriter или закрыт. Это возможно для StreamWriter, если свойство BaseStream имеет значение null. Однако TextWriter не имеет этого свойства. Есть ли другой способ проверить, открыт ли TextWriter или нет?
1 ответ
Вы можете попробовать вот так:
if( writer.BaseStream != null)
{
writer.WriteLine("Writer is open");
}
else
{
MessageBox.Show ("Writer is closed");
}
т.е. если BaseStream
НЕДЕЙСТВИТЕЛЕН, тогда писатель уже расположен.
Также рекомендуется использовать using
заблокировать для этого, как он заботится об этом.