我应该将哪种XML序列化方法用于公共API?

时间:2010-11-19 19:33:33

标签: c# .net datacontractserializer xmlserializer ixmlserializable

我正在编写一个程序来构建一个树结构,该结构由继承自抽象Node类的类组成。我的程序中内置了许多不同类型的节点。但是,我还希望允许更多高级用户引用我的库并编写自己的Node派生。然后,当我的应用程序通过Assembly.Load()启动时,会加载这些插件库。因此,我的应用程序使用的所有潜在Node类型在运行时才会知道。

此外,我希望能够将这些树序列化和反序列化为XML文件。我有一些XMLSerializer,DataContractSerializer和实现IXmlSerializable的经验。通常,我使用DataContractSerializer,因为它通常需要更少的代码然后实现IXmlSerializable,并且可以序列化XmlSerializer不能的私有字段。

然而,在这个项目中,我还必须考虑其他用户将创建派生自我的类的类,并且还必须添加序列化它们所需的任何代码或属性。

考虑到这个原因我应该采用一种序列化机制而不是另一种?

1 个答案:

答案 0 :(得分:2)

如果序列化和反序列化仅在您的应用程序中发生,并且如果不要求其他人能够读取序列化数据,则序列化格式不会影响API:就用户而言关注API,您将序列化为不透明文件并从中反序列化。

在这种情况下,请使用DataContractSerializer,因为它可以在必要时序列化为二进制文件。