反序列化为其名称空间已更改的类型

Cri*_*scu 6 .net c# serialization binaryformatter binary-serialization

使用.NET 4/C#...

我需要反序列化包含名为ns1.X的类型的序列化表示的旧配置文件.序列化已经完成了BinaryFormatter.

问题是,经过一轮重构后,类型X已被移动到另一个名称空间,比如ns2.X.

我尝试创建一个从ns2.X派生的新的空ns1.X类型,虽然这绕过了' 找不到类型ns1.X '错误,但反序列化对象中的属性都是null.此外,在此过程中没有调用ctors.

有什么建议?

Kel*_*ell 1

您将需要使用ISerializationSurregate来实现这一点。这并不太难,杰夫·里克特(Jeff Richter)解释得很好。我推荐他的书 CLR Via c# 3。