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

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

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

我使用DataContractSerializer进行了测试,看起来DataContractSerializer对对象更改非常宽容,因此我将使用该方法。

这没有被标记为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

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