反序列化二进制对象时获取版本

本文关键字:获取 版本 对象 二进制 反序列化 | 更新日期: 2023-09-27 18:19:30

我正在使用BinaryFormatter序列化一个类。当我在文本编辑器中打开创建的文件时,我可以看到在开始时,一些属性,如namespace、version、cultureInfo。。。写在那里。再次反序列化此文件时,如何读取此版本字符串?提前谢谢!

反序列化二进制对象时获取版本

您应该看看MSDN上的这篇文章:

  • 运行时序列化,第1部分
  • 运行时序列化,第2部分
  • 运行时序列化,第3部分

BinaryFormatter有两个属性:BinderSurrogateSelector

有了这些,您就可以干扰序列化/反序列化过程并访问这些信息。关于它的更多信息可以在上面的文章中找到。

您可能应该像读取普通文件一样读取该部分(读取和检查字节)。

但是,你为什么会对这个部分感兴趣呢?如果是,那么最好以正常方式将自己的版本属性添加为要序列化的其他数据,并以正常方式(通过像所有其他数据一样的反序列化)检索它。

备注:

  • 如果这是第一次,您可以编写一个"更新程序",它读取旧文件并用新文件进行转换(因此更改枚举值)。对于新的序列化对象,添加一个版本(始终,并为发布的每个版本更新它)。在这种情况下,你总是可以在变化上有所不同。通过制作这样的更新功能,您总是可以将旧版本的数据更改为新版本。在这种情况下(因为您没有版本),您可以假设它是旧版本