.net - 具有不同程序集版本的二进制反序列化

标签 .net serialization binaryformatter assemblyversions

我有一个项目,它使用 BinaryFormatter 来序列化带有字符串和 bool 的结构集合?数据类型。

序列化/反序列化工作正常,但是如果我要更改执行工作的程序集,它无法反序列化,因为二进制文件中的 header 表明它需要 Assembly x而不是 Assembly y来处理数据。

是否可以将序列化/反序列化设置为与程序集无关?

最佳答案

您可以通过将自定义 SerializationBinder 分配给格式化程序来控制二进制格式化程序如何解析其类型。通过这种方式,您无需弄乱 AppDomain 的解析事件,并且消除了由此产生的意外副作用的风险。

MSDN 有一个详细的例子.

关于.net - 具有不同程序集版本的二进制反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/505611/

相关文章:

c# - BindingExpression 路径错误 : property not found on 'object'

c# - wmic 通过 .NET 或 C#

python - 是否可以使用 pickle 序列化某些对象并在 Python3 的其他独立模块中使用它?

c# - 序列化时忽略 XML 属性

c# - 如果我不知道正确的类型,如何反序列化一个对象?

c# - BinaryFormatter - 是否可以在没有程序集的情况下反序列化已知类?

c# - 不对 TPL 任务对象调用 Dispose() 是否可以接受?

c# - 使用泛型将对象类型转换为泛型类型

c# - 跨程序集移动的反序列化类型

c# - 检查 Binary Formatter 的序列化是否已完成