需要序列化对象,并且在反序列化时可能会更改程序集版本。此外,它可能会发生,对象会发生一些变化。
XmlSerializer不存储类型信息,如果对象发生了一些变化,它就不会失败,但XmlSerializer无法从超类中序列化私有或内部属性,我无法用属性标记。 所以我看了一下DataContractSerializer。它看起来很好,超级类的私有/内部属性的问题将得到解决,所有属性都必须标记,我不需要它们,但类型信息怎么样?如果某些属性被删除,重命名或添加,DataContractSerializer的行为如何?
答案 0 :(得分:2)
我使用DataContractSerializer进行了测试,看起来DataContractSerializer对对象更改非常宽容,所以我将使用这种方法。
答案 1 :(得分:1)
这不是标记为WCF问题,但是您正在谈论DataContractSerializer的事实让我认为您在WCF中工作。如果是这种情况,那么在查看IExtensibleDataObject接口时可能会这么做。
参见:
http://msdn.microsoft.com/en-us/library/system.runtime.serialization.iextensibledataobject.aspx
和
答案 2 :(得分:0)
仍然可以根据您的需要使用XmlSerializer。但是您必须使用IXmlSerializable
接口实现自定义序列化逻辑。