我有一个项目,它使用 BinaryFormatter 来序列化带有字符串和 bool 的结构集合?数据类型。
序列化/反序列化工作正常,但是如果我要更改执行工作的程序集,它无法反序列化,因为二进制文件中的 header 表明它需要 Assembly x
而不是 Assembly y
来处理数据。
是否可以将序列化/反序列化设置为与程序集无关?
最佳答案
您可以通过将自定义 SerializationBinder 分配给格式化程序来控制二进制格式化程序如何解析其类型。通过这种方式,您无需弄乱 AppDomain 的解析事件,并且消除了由此产生的意外副作用的风险。
在 MSDN 有一个详细的例子.
关于.net - 具有不同程序集版本的二进制反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/505611/