在不知道所写的确切类型的情况下反序列化二进制数据

时间:2012-01-04 20:56:43

标签: c# serialization deserialization

我遇到了一个问题,即使用BinaryFormatter存储的少量数据对象会返回参数丢失(null / default)。

我想知道丢失的项目是否保存为null,或者序列化的对象是否已从源代码管理中的版本更改,然后在代码提交之前还原(例如int numDogs vs {{ 1}})。

前者代表序列化完成前运行的数据验证代码中的一个严重错误;而后者只是测试数据库中的垃圾数据。

由于unsigned int dogCount能够在更改/添加/删除成员时获取所有其他内容,因此我假设它以类似于键值存储的形式编写对象。有没有办法获得它的可读表示,而不必尝试猜测序列化对象的确切细节?

1 个答案:

答案 0 :(得分:2)

如果在对象上实现ISerializable,可以通过尝试反序列化来查看已序列化的内容。

您需要添加一个与ISerializable.GetObjectData具有相同签名的构造函数 - 这是反序列化的地方。