哪一个更好地处理版本控制? XmlSerializer与DataContractSerializer?
问题描述:
需要序列化一个对象,并且可能在反序列化时更改了程序集版本。此外,它可能会发生,对象发生变化。哪一个更好地处理版本控制? XmlSerializer与DataContractSerializer?
XmlSerializer不存储类型信息,如果对象更改一点,它只是不会失败,但XmlSerializer无法序列化超类中的私有属性或内部属性,我无法用属性标记。 所以我看了一下DataContractSerializer。它看起来很好,所以费用,超类的私有/内部属性的问题将被解决,所有的属性必须被标记,我不需要它们,但是类型信息呢? DataContractSerializer的行为,如果一些属性被删除,重命名或添加?
答
我对DataContractSerializer进行了测试,看起来DataContractSerializer对对象更改非常宽容,所以我将使用该方法。
答
它仍然可以使用XmlSerializer满足您的需求。但是您将不得不使用IXmlSerializable
接口来实现自定义序列化逻辑。
答
这不是标记为WCF问题,但您谈论DataContractSerializer的事实让我觉得您正在WCF中工作。如果是这种情况,可能会无意中查看IExtensibleDataObject接口。
参见:
http://msdn.microsoft.com/en-us/library/system.runtime.serialization.iextensibledataobject.aspx
和
您可能也有兴趣在NetDataContractSerializer http://msdn.microsoft.com/en-us/library/system。 runtime.serialization.netdatacontractserializer.aspx它专门用于.NET对象 – bendewey 2009-05-19 15:07:54