2012-03-02 37 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您的方案。