代码之家  ›  专栏  ›  技术社区  ›  Andrew Bullock

NET中的对象图序列化和代码版本升级

  •  3
  • Andrew Bullock  · 技术社区  · 15 年前

    如果我对类进行更改,然后尝试反序列化旧版本,我可能会遇到什么困难?

    例如,在新版本的代码中,我是否需要保留所有旧类,以便在反序列化旧文件时,我可以这样做到旧类,然后将数据迁移到新类?更改类的名称/命名空间是否会中断反序列化?

    2 回复  |  直到 15 年前
        1
  •  3
  •   Regent    15 年前

    嗯,我记得,问题开始于:

    • 向类添加新字段/属性;
    • 更改现有字段/属性的类型。

    你可以有 custom serialization

    但我建议使用 DataContractSerializer 随着 Best Practices: Data Contract Versioning 最常见的情况。

        2
  •  1
  •   Drew Noakes    15 年前

    这取决于序列化数据的格式。如果您使用.NET1.0二进制序列化,那么您将被限制为DLL的特定版本。我不建议这样做。

    我个人建议使用DataContracts和默认的WCF序列化器: DataContractSerialiser [OnDeserializing] IExtensibleDataObject .

    DataContractSerializer 输出XML或二进制文件。