Я бы также предположил, что сейчас самое время попытаться отделить части вашего приложения, чтобы вы могли изменить его в будущем. Итак, TextWriter
- это хорошая абстракция для потока, доступного для записи, но рассмотрите возможность абстрагирования вашего класса экспорта.
например. Теперь вы хотите сделать это так:
MemoryStream memoryStream = new MemoryStream();
TextWriter tw = new StreamWriter(memoryStream);
// tab-delimited export
IExporter exporter = new DelimiterExport(data, tw, "\t");
exporter.Export();
, чтобы вы могли легко изменить его на:
// csv file (stands for "comma separated value", but you should actually
// use a culture-specific list separator instead)
var separator = Thread.CurrentThread.CurrentCulture.TextInfo.ListSeparator;
IExporter exporter = new DelimiterExport(data, tw, separator);
или любая другая реализация:
// excel export
IExporter exporter = new ExcelExport(data, tw);
Предоставляя независимый от протокола интерфейс, вы упростите себе жизнь.