哪个更好处理版本控制? XmlSerializer与DataContractSerializer?

时间:2009-05-19 14:59:41

标签: c# xml-serialization

需要序列化对象,并且在反序列化时可能会更改程序集版本。此外,它可能会发生,对象会发生一些变化。

XmlSerializer不存储类型信息,如果对象发生了一些变化,它就不会失败,但XmlSerializer无法从超类中序列化私有或内部属性,我无法用属性标记。 所以我看了一下DataContractSerializer。它看起来很好,超级类的私有/内部属性的问题将得到解决,所有属性都必须标记,我不需要它们,但类型信息怎么样?如果某些属性被删除,重命名或添加,DataContractSerializer的行为如何?

3 个答案:

答案 0 :(得分:2)

我使用DataContractSerializer进行了测试,看起来DataContractSerializer对对象更改非常宽容,所以我将使用这种方法。

答案 1 :(得分:1)

这不是标记为WCF问题,但是您正在谈论DataContractSerializer的事实让我认为您在WCF中工作。如果是这种情况,那么在查看IExtensibleDataObject接口时可能会这么做。

参见:

http://msdn.microsoft.com/en-us/library/system.runtime.serialization.iextensibledataobject.aspx

http://msdn.microsoft.com/en-us/library/ms731138.aspx

答案 2 :(得分:0)

仍然可以根据您的需要使用XmlSerializer。但是您必须使用IXmlSerializable接口实现自定义序列化逻辑。