4

我正在编写一个程序,该程序构建一个由从抽象类继承的类组成的树结构Node。我的程序中内置了许多不同类型的节点。但是,我也希望让更高级的用户能够引用我的库并编写他们自己的Node. 然后,当我的应用程序通过Assembly.Load(). 因此,我的应用程序使用的所有潜在Node类型在运行时才会知道。

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

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

考虑到这一点,我是否应该使用一种序列化机制而不是另一种?

4

1 回答 1

2

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

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

于 2010-11-19T19:46:30.970 回答