我有两个继承自公共基类的类。
这些专用类中的每一个都从数据库加载一些数据,对其进行处理,然后将该信息保存在文本文件中。
第一个类将信息表示为XML文档。 第二个类将其信息存储为文本文件,分隔符分隔字段。
我想要做的是在基类中编写一个可供两个类使用的Save方法。由于所有类都将写入文本文件,我正在考虑使用一种通用表示将其数据存储在内存中 - 例如,第一个类将XmlDocument转换为该公共表示。
将这个存储在内存中的最佳方法是什么,字符串,Stream?
由于
答案 0 :(得分:1)
鉴于XML是您提到的两种格式中更丰富的,并且相对容易操作,为什么不使用单一表示和2种保存方法?
答案 1 :(得分:1)
如果派生类以非常不同的方式表示数据,请不要为它们实现常用的Save方法,这些类最了解如何保存数据。 使Save()成为抽象,让每个子类实现保存。
执行Save()可能有一些共同之处(例如,打开实际文件,错误处理)。所以让你的基类提供一个Save()方法,该方法负责调用每个子类实现的虚拟Save(System.IO.TextWriter writer);
方法。
答案 2 :(得分:0)
如果输入数据是统一结构化的,您可以将其干净地存储在DataSet
中,也可以使用TextReader
输入上的DataSet.ReadXml直接从XML加载。
如果您只有一种类型的记录输出到分隔文本文件,DataTable可以直接使用 - DataSet
封装多个DataTable
。
另一个替代方案可能是使用XSLT直接将XML转换为CSV(这里可以使用逗号=分隔符,你可以使用任何你想要的东西),如@Welbog所示here。