检查二进制序列化数据是否与序列化它的类匹配

本文关键字:序列化 二进制 数据 是否 检查 | 更新日期: 2023-09-27 18:27:30

标题几乎说明了我想知道的内容。我有二进制序列化的数据,现在我正在再次读取它(类名保持不变),我想知道序列化程序是否遗漏了什么,例如,一个私有的支持字段可能已经重命名。

我进行了以下重构:

private string descriptionField;
public string Description
{
  get { return this.descriptionField; }
}

public string Description { get; private set; }

正如本文中所述,这是行不通的。但我真的很想知道是否有一种方法可以检测类是否与序列化的数据不匹配。

我不想自己通过实现ISerializable来进行序列化,因为类及其属性非常大,可能会更改。我更喜欢一个更简单的解决方案=)

检查二进制序列化数据是否与序列化它的类匹配

但我真的很想知道是否有一种方法可以检测类是否与序列化的数据不匹配?

检测它的一种方法是用与前一个序列化文件中相同的数据序列化现有类,然后比较前一个和当前序列化文件的数字指纹。

我不想自己通过实现ISerializable来进行序列化,因为类及其属性非常大,可能会更改。

由于您正在使用BinaryFormatter并处理潜在的重大版本控制问题,我认为您唯一的选择是实现ISerializable并自己处理反序列化,无论您喜欢与否。