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

发布于 2024-12-09 14:10:43 字数 289 浏览 0 评论 0原文

使用 .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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

淡看悲欢离合 2024-12-16 14:10:43

您将需要使用 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文