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

问题描述:

需要序列化一个对象,并且可能在反序列化时更改了程序集版本。此外,它可能会发生,对象发生变化。哪一个更好地处理版本控制? XmlSerializer与DataContractSerializer?

XmlSerializer不存储类型信息,如果对象更改一点,它只是不会失败,但XmlSerializer无法序列化超类中的私有属性或内部属性,我无法用属性标记。 所以我看了一下DataContractSerializer。它看起来很好,所以费用,超类的私有/内部属性的问题将被解决,所有的属性必须被标记,我不需要它们,但是类型信息呢? DataContractSerializer的行为,如果一些属性被删除,重命名或添加?

+0

您可能也有兴趣在NetDataContractSerializer http://msdn.microsoft.com/en-us/library/system。 runtime.serialization.netdatacontractserializer.aspx它专门用于.NET对象 – bendewey 2009-05-19 15:07:54

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

它仍然可以使用XmlSerializer满足您的需求。但是您将不得不使用IXmlSerializable接口来实现自定义序列化逻辑。

这不是标记为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