我正在 VB 中处理 WCF 服务。有人问我我的 DTO 是否在 différentas 命名空间中。这是一个包含两个类的示例:
第一课:
Namespace DTO
Namespace SaveContext
<DataContract(Namespace:="MyProject/DTO", Name:="Reply")> _
Public Class Reply
'Members and methods of my first class
End Class
End Namespace
End Namespace
第二类:
Namespace DTO
Namespace ClearContext
<DataContract(Namespace:="MyProject/DTO", Name:="Reply")> _
Public Class Reply
'Members and methods of my second class
End Class
End Namespace
End Namespace
当我来创建一个对象时,一切都很好。下面是一个例子:
Dim saveReply As New DTO.SaveContext.Reply
Dim clearReply As New DTO.ClearContext.Reply
但是当我来做一个测试项目来测试我的服务时,没有命名空间没有出现,而且我的两个类都是一样的。 Intellisence 进入我的第一个名为 Reply 的类,以及名为 Reply1 的第二个类,而我希望我的类具有相同的层次结构。所以我想知道是否可以这样做?我期待着您的回复。预先感谢您的关注。
最佳答案
WCF 正在为您自动解决类“命名冲突”。您将两个单独的 C# 类定义到同一个 XML 命名空间中,以便 WCF WSDL 生成器正确地将它们标记为单独的 XML 架构。您所看到的行为就像 Microsoft 喜欢说的“按设计”。也许你真正需要做的是使用继承和KnownTypes对于您的场景。
关于vb.net - DataContract WCF 中的命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9534496/