标题几乎说明了我想知道的内容。我有二进制序列化的数据,现在我再次读它(类名保持不变),我想知道序列化器是否遗漏了某些东西,例如,私有后备字段可能已被重命名。
我做了以下重构:
private string descriptionField;
public string Description
{
get { return this.descriptionField; }
}
到
public string Description { get; private set; }
如in this article所述,这不起作用。但我真的想知道是否有办法检测类是否与序列化数据不匹配。
我不想通过实现ISerializable
来自己进行序列化,因为类及其属性非常大并且可能会更改。我更喜欢更简单的解决方案=)
答案 0 :(得分:1)
但我真的想知道是否有办法检测该类是否与序列化数据不匹配?
检测它的一种方法是使用与先前序列化文件中相同的数据序列化现有类,然后比较先前和当前序列化文件的数字指纹。
我不想通过实现ISerializable来自己进行序列化,因为类及其属性非常大并且可能会被更改。
由于您正在使用BinaryFormatter并处理可能存在重大版本问题,我认为您唯一的选择是实现ISerializable
并自行处理反序列化,无论您是否喜欢。