C# 与IExtensibleDataObject等效的XmlSerializer

C# 与IExtensibleDataObject等效的XmlSerializer,c#,xml,serialization,xmlserializer,iextensibledataobject,C#,Xml,Serialization,Xmlserializer,Iextensibledataobject,使用DataContracts,您可以从IExtensibleDataObject派生,以允许往返工作,而不会丢失XML文件中任何未知的额外数据 我不能使用DataContract,因为我需要控制输出XML的格式。但我还需要能够在旧版本的应用程序中读取XML文件的未来版本,而不会丢失XML文件中的任何数据 e、 g XML v1: <Person> <Name>Fred</Name> </Person> XML v2: <Perso

使用DataContracts,您可以从IExtensibleDataObject派生,以允许往返工作,而不会丢失XML文件中任何未知的额外数据

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

e、 g

XML v1:

<Person>
    <Name>Fred</Name>
</Person>
XML v2:

<Person>
    <Name>Fred</Name>
    <Age>42</Age>
</Person>
如果从我的应用程序的v1中读取XML v2文件,再次对其进行反序列化和序列化会将其转换为XML v1文件。i、 e.年龄字段被删除


是否有类似于IExtensibleDataObject的东西可以与XmlSerializer一起使用,以避免年龄字段消失?

和。

谢谢,这正是我想要的。我向每个可序列化类添加了以下属性:[XmlAnyElement]public XmlElement Anything;Oops应该是:[XmlAnyElement]公共XmlElement[]任何内容;