2012-03-02 95 views
2

我正在使用VB中的WCF服务。有人问我的DTO是否在différentas命名空间中。下面是两个类的例子:DataContract中的命名空间WCF

第一类:

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,而我希望与我的课程有相同的层级。所以我想知道是否有可能做到这一点?我期待着你的回应。提前感谢您的关注。

回答

1

WCF自动为您解析类“命名冲突”。您正在将两个单独的C#类定义到同一个XML名称空间中,因此WCF WSDL生成器正确地将它们标记为单独的XML模式。你看到的行为是微软喜欢说的“按设计”。也许你真正需要做的是使用继承和KnownTypes您的方案。