我将数据存储在已使用.net BinaryFormatter序列化的类的实例中.我现在想要重命名该类中的一个字段,但仍然能够反序列化旧数据.
一种选择是手动实现ISerializable并反序列化该类的所有字段.但这似乎很多工作,特别是如果我的班级有很多字段而且我只重命名了一个字段.
有没有更好的办法?
Craig建议保留旧类的副本以进行反序列化,并将值复制到新类.我在其他地方也看到了这个建议 - 这比实现ISerializable有什么优势?据我所知,复制该类给我留下了两个几乎相同的类副本,而且我仍然需要将旧类中的所有值复制到新类 - 这似乎与实现ISerializable的工作量相同.几乎重复的类投入混合.
两个答案提到了宾德斯.我已经成功地使用SerializationBinder反序列化了一个被序列化为类Foo的类Bar,但那是因为类的名称发生了变化.当你重命名一个字段时,SerializationBinder是否也有帮助 - 例如当int m_Left被重命名为int m_Right时?
| 归档时间: |
|
| 查看次数: |
2445 次 |
| 最近记录: |