【发布时间】:2025-11-25 00:30:01
【问题描述】:
我们发布了一个使用 .NET soap 格式化程序序列化一个非常复杂的对象的程序。 Soap 不能很好地处理所涉及的类的新版本,因此我们正在切换到二进制格式化程序。
为了处理旧的对象版本,我编写了一个转换器,它在soap中反序列化对象,并在二进制中重新序列化它。
转换器使用切换时类的版本,因此我将这些类放在不同的命名空间中以避免与当前版本冲突。
问题是:命名空间显然是用类序列化的,所以我收到错误:无法将 NamespaceA.class 强制转换为 NamespaceB.class。 (啊!)
类完全相同;唯一的问题是名称空间。如何让框架忽略命名空间?
【问题讨论】:
-
这是否就像在说“两辆车一模一样,只是一辆是红色的,另一辆是蓝色的,其中一辆是福特,另一辆是沃尔沃”?
-
这更像是说一辆红色沃尔沃是经销商 A 卖的,另一辆红色沃尔沃是经销商 B 卖的,所以它们是“不同的”。
-
不是真的,@alankdkd。命名空间是类名的一部分,@Lesse 是对的。
-
在这种情况下,它是类中不需要和不需要的部分。我通过避免它来“解决”了这个问题:我让转换器成为一个单独的应用程序,所以我可以使用相同的命名空间。而且……它奏效了!感谢 LASSE 和 MATHEW 的建议!
标签: .net serialization soap namespaces