反序列化时忽略过时的字段

时间:2014-08-03 19:39:59

标签: c# serialization field versioning obsolete

我一整天都在寻找一种没有结果的方法来实现这个目标......

我正在尝试反序列化一个对象。当我序列化它时,我有一个名为(让我们说)obsoleteBool的bool。在该类的新版本中,我删除了这个bool,我现在在反序列化时出错(Field" obsoleteBool" not found)。

在新版本和新版本之间添加新字段非常容易。即使不使用[OptionalField]属性......但如何管理旧版本和新版本之间字段的删除?

1 个答案:

答案 0 :(得分:0)

有三种可能的解决方案:

  • 最简单的方法:将旧字段添加到新版本和类
  • 自定义代码:实现自定义反序列化程序
  • 额外工作:编写一个转换程序,该程序遍历所有序列化类,使用旧格式读取它们并使用New类定义对它们进行重新序列化。

就商业价值而言,第一种选择可能更可取。