C#中基于XML的项目文件的设计模式

时间:2010-09-11 19:13:50

标签: c# windows xml design-patterns xml-serialization

我正在开发一个C#应用程序,其中大部分代码库都在C#类库中。我希望应用程序支持保存和加载基于XML的项目文件,并能够确定自上次保存以来是否发生了任何修改。

我目前的设计理念是:

  1. 每个需要存储设置的类都实现了IXmlSerializable。

  2. 应用程序维护IXmlSerializable设置对象的通用列表,并调用ReadXml和WriteXml来保存/加载项目文件。

  3. 每个存储设置的类都会维护一个Modified标记。

  4. 应用程序可以通过枚举IXmlSerializable对象的通用列表并检查每个对象上的Modified标志来检查项目是否已被修改。它还可以在保存后清除每个上的Modified标志。

  5. 这是一个好设计吗? 还有更好的吗? 也许我还需要从IXmlSerializable派生我自己的接口来添加Modified标志?

    谢谢,安迪

1 个答案:

答案 0 :(得分:2)

我认为你想要的概念是健全的。我只有一个问题,可能是我在阅读你的措辞。

如果未设置实例修改标志,您似乎不希望执行WriteXml方法。如果我已经正确理解,我认为你会发现结果文件将不包含未修改的设置。 XmlSerialization是全有或全无,它无法更新文件的某些部分。

所以我认为你的标志对于确定是否需要保存是有用的,但如果你确定需要保存数据,则需要保存整个结构。在这种情况下,除非您有一些无法解决的自定义序列化要求,否则不需要在每个类上实现IXmlSerializable。