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

时间:2014-08-27 09:47:59

标签: c# serialization version deserialization

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

2 个答案:

答案 0 :(得分:2)

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

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

备注你的评论:

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

答案 1 :(得分:1)

您应该在MSDN上查看这些文章:

BinaryFormatter有两个属性:BinderSurrogateSelector

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