2011-10-12 155 views
6

使用.NET 4/C#...反序列化类型,其命名空间已经改变

我需要反序列化包含姓名的人士称,ns1.X类型的序列化表示旧的配置文件。序列化已使用BinaryFormatter完成。

问题是,经过一轮重构之后,类型X已被移动到不同的名称空间,比如ns2.X。

我试图创建一个从ns2.X派生的新的空ns1.X类型,而这种绕开“找不到类型ns1.X”错误,在反序列化对象的属性都null 。另外,在这个过程中没有任何客户被调用。

有什么建议吗?

+1

不知道这是否可以解决你的问题,因为我从来没有真正使用它,但我记得前段时间在TypeForwarding上读到:你可以在这里找到信息:http:// msdn .microsoft.com/en-us/library/ms404275.aspx – Anton

+0

有趣。我会检查出来的。 –

+0

谷歌搜索发现这可能有所帮助: http://www.codeproject.com/KB/cs/DrawWithMouse.aspx#AdvancedBinarySerialization:DeserializinganObjectIntoaDifferentTypeThantheOneItwasSerializedInto9 – Dan

回答

1

您将需要使用ISerializationSurregate来实现此目的。这并不难,杰夫里希特解释得很好。我推荐他的书CLR Via c#3.

相关问题