我需要将一些对象图序列化为光盘
如果我对某个类进行更改,然后尝试反序列化旧版本,我可能会遇到哪些困难?
有些序列化程序能比其他序列化程序更好地处理这个问题吗?
处理这种情况的标准方法是什么?
例如,在新版本的代码中,我是否需要保留所有旧类,以便在反序列化旧文件时我可以对旧类进行反序列化,然后将数据迁移到新类?是否会更改类的名称/命名空间中断反序列化?
感谢您的任何建议
答案 0 :(得分:3)
好吧,我记得,问题始于:
您可以让custom serialization自行处理版本问题。
但我建议将DataContractSerializer
与Best Practices: Data Contract Versioning一起用于最常见的案例。
答案 1 :(得分:1)
这取决于您需要序列化数据的格式。如果您使用.NET 1.0二进制序列化,那么您将被限制为DLL的特定版本。我不建议这样做。
我个人建议将DataContracts与默认的WCF序列化器一起使用:DataContractSerialiser
。您可以控制使用[OnDeserializing]
和IExtensibleDataObject
等技术反序列化该类型的其他版本时发生的情况。
您也可以DataContractSerializer
输出XML或二进制文件。