反序列化为名称空间已更改的类型
使用 .NET 4/C#...
我需要反序列化旧的配置文件,其中包含名为 ns1.X 的类型的序列化表示形式。序列化是使用BinaryFormatter
完成的。
问题是,经过一轮重构后,类型 X 已移动到不同的命名空间,例如 ns2.X 。
我尝试创建一个派生自 ns2.X 的新空 ns1.X 类型,虽然这避免了“找不到类型 ns1.X”错误,但反序列化对象中的属性全部为空
。此外,在此过程中没有任何演员被召唤。
有什么建议吗?
Using .NET 4/C#...
I need to deserialize old config files that contain the serialized representation of a type named, say, ns1.X . The serialization has been done using BinaryFormatter
.
The problem is, after a round of refactoring, the type X has been moved to a different namespace, say ns2.X .
I have tried creating a new empty ns1.X type that derives from ns2.X, and while this circumvents the 'Can't find type ns1.X' error, the properties in the deserialized object are all null
. Also, no ctors get called in the process.
Any suggestions?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您将需要使用 ISerializationSurregate 来实现此目的。这并不太难,杰夫·里克特(Jeff Richter)解释得很好。我推荐他的书 CLR Via c# 3。
You're going to need to use an ISerializationSurregate to make this happen. It's not too difficult and Jeff Richter explains it really well. I recommend his book CLR Via c# 3.