代码之家  ›  专栏  ›  技术社区  ›  demoncodemonkey

与IExtensibleDataObject等效的XmlSerializer

  •  2
  • demoncodemonkey  · 技术社区  · 14 年前

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

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

    例如

    XML版本1:

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

    XML V2:

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

    如果从我的应用程序的v1中读取一个XML v2文件,则对其进行反序列化并再次序列化会将其转换为XML v1文件。即“年龄”字段被删除。

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

    1 回复  |  直到 14 年前
        1
  •  5
  •   Marc Gravell    14 年前