2010-03-24 111 views
2

使用DataContracts可以从IExtensibleDataObject派生出来,以允许往返运行而不会丢失XML文件中的任何未知附加数据。XmlSerializer等价于IExtensibleDataObject

我无法使用DataContract,因为我需要控制输出XML的格式。但是我还需要能够在旧版本的应用程序中读取未来版本的XML文件,而不会丢失XML文件中的任何数据。

例如

XML V1:

<Person> 
    <Name>Fred</Name> 
</Person> 

XML V2:

<Person> 
    <Name>Fred</Name> 
    <Age>42</Age> 
</Person> 

如果从V1我的应用程序的读取XML文件V2,反序列化和序列化一次它把它变成一个XML文件V1。即“年龄”字段被删除。

有没有类似于IExtensibleDataObject,我可以使用XmlSerializer避免Age字段消失?

回答

4
+0

谢谢,正是我想要的。 我为每个可序列化类添加了以下属性: [XmlAnyElement] public XmlElement Anything; – demoncodemonkey 2010-03-25 13:51:59

+0

哎呀,应该是:[XmlAnyElement] public XmlElement [] Anything; – demoncodemonkey 2010-03-25 14:27:16