使用 DataContracts,您可以从 IExtensibleDataObject 派生以允许往返工作,而不会丢失 XML 文件中任何未知的附加数据。
我不能使用 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 字段消失?