C# 如何使用.NET运行时序列化来识别放置在独立存储中的对象的版本?

C# 如何使用.NET运行时序列化来识别放置在独立存储中的对象的版本?,c#,.net,vb.net,serialization,isolatedstorage,C#,.net,Vb.net,Serialization,Isolatedstorage,我们正在构建使用.NET运行时序列化将对象存储到独立存储的应用程序。 当我们通过向正在序列化的对象类添加一些新属性来更新应用程序时,会出现问题。所以我们想对隔离存储中的对象进行某种版本控制,以便在反序列化之前检查它们是否过时 如何以最好的方式做到这一点,有什么建议和想法吗 对于实现IFormatter接口的自定义格式化程序,您有什么看法?它能代替Veshing对象吗 我在微软论坛上更详细地写了这个问题。你可以在序列化中进行序列化。首先是一个包装类,告诉版本,并保存内部的true类 但是这感觉有点

我们正在构建使用.NET运行时序列化将对象存储到独立存储的应用程序。 当我们通过向正在序列化的对象类添加一些新属性来更新应用程序时,会出现问题。所以我们想对隔离存储中的对象进行某种版本控制,以便在反序列化之前检查它们是否过时

如何以最好的方式做到这一点,有什么建议和想法吗

对于实现IFormatter接口的自定义格式化程序,您有什么看法?它能代替Veshing对象吗


我在微软论坛上更详细地写了这个问题。

你可以在序列化中进行序列化。首先是一个包装类,告诉版本,并保存内部的true类


但是这感觉有点难闻。

您可以在序列化中进行序列化。首先是一个包装类,告诉版本,并保存内部的true类


然而,这感觉有点难闻。

这里有一些选项,可以按特定顺序排列

根据版本命名文件 将文件放置在基于版本的目录中 创建一个包装器对象,该对象包含关于每个序列化对象的元数据,例如版本号。 向包含持久化应用程序版本号的每个对象添加属性
这里有几个选项在任何特定的顺序

根据版本命名文件 将文件放置在基于版本的目录中 创建一个包装器对象,该对象包含关于每个序列化对象的元数据,例如版本号。 向包含持久化应用程序版本号的每个对象添加属性
如果是二进制序列化,则可以直接读取字节,并由此确定程序集版本。字节号22以后包含有关程序集和对象类型的信息,因此您可以编写一些内容来读取这些信息,然后确定您的对象是否过时

如果是二进制序列化,您可以直接读取字节,并由此确定程序集版本。字节号22以后包含有关程序集和对象类型的信息,因此您可以编写一些内容来读取这些信息,然后确定您的对象是否过时

Marc Gravell在评论中提出了使用版本容忍序列化程序的好主意。 它使我们能够充分控制反序列化,甚至可以使过时的对象可重用。 更多关于


感谢大家的建议。

Marc Gravell在评论中提出了使用版本容忍序列化程序的好主意。 它使我们能够充分控制反序列化,甚至可以使过时的对象可重用。 更多关于


谢谢大家的建议。

您使用的是哪种序列化?数据不再可用,这很不寻常吗?为什么不切换到一个版本容忍的序列化程序;冒着听起来像一张破唱片的风险,protobuf net在这里真的能帮上忙。谢谢Marc。这对解决我们的问题非常有帮助。您使用的是哪种序列化?数据不再可用,这很不寻常吗?为什么不切换到一个版本容忍的序列化程序;冒着听起来像一张破唱片的风险,protobuf net在这里真的能帮上忙。谢谢Marc。这确实有助于解决我们的问题。