2010-11-09 70 views
1

我在我的應用程序中有多個服務。我有一個datacontract,我需要在超過1個服務中使用。WCF數據合同/設計問題的命名空間問題?

如:類myCommonClass在我的服務service1 2和service2

使用要做到這一點,在服務水平,我有一個MyApplication.Common庫,這個庫包含myCommonClass。由於我的服務都提到了MyApplication.Common,他們都可以使用它。

我的客戶端應用程序具有對service1service2的服務引用。 爲了我的客戶端應用程序,service1.myCommonClass是相比於service2.myCommonClass潛藏我的問題

以我Reference.cs(經由SvcUtil工具生成一個單獨的名稱空間 - BOTH類的命名空間是相同

System.Runtime.Serialization.DataContractAttribute 
(Name="MyCommonClass", Namespace="http://A.B.MyCommonClassNamespace")]) 

然而,兩者都是在2個獨立的reference.cs文件,並在reference.cs的命名空間是不同的,由於是兩個單獨的服務的引用的部分。

因此,對於我的客戶端應用程序,它們顯示爲兩個完全無關的類。

* 問題1 *:有什麼辦法可以我指示我的客戶端應用程序service1.myCommonClassservice2.myCommonClass本質上是同一類?

* 問題2 *:我的設計在這裏有什麼本質上的錯誤,我運行 到這個問題?

回答

1

不,你的設計很好。而不是從Visual Studio中添加服務引用,請在命令提示符處使用svcutil生成代理類。創建一個類庫項目並將生成的.cs文件添加到它。您可以創建批處理文件並在預生成步驟中運行它。
使用SvcUtil工具如下生成代理類,從服務的DLL(實現你的兩個服務的DLL)

svcutil.exe /t:metadata "PATH\service1.dll" "PATH\service2.dll" 
svcutil.exe /t:code *.wsdl *.xsd /o:Proxy.cs 
+0

由於單個文件。我一定會嘗試一下並更新它的方式。 – InSane 2010-11-10 07:36:58