我还建议这是尝试解耦应用程序部分的好时机,以便您将来可以更改部分应用程序。因此,aTextWriter
是可写流的一个很好的抽象,但也要考虑抽象您的导出类。
例如,现在你想这样做:
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);
通过现在提供独立于协议的接口,您以后的生活会更轻松。