2011-07-01 65 views
3

我有一個客戶端應用程序消耗被接受並返回一些複雜類型參數的WCF服務。這些複雜類型是在一個單獨的程序舉行,無論是客戶端應用程序和WCF服務的引用.. 的問題是,當我加入的客戶端應用程序的服務引用,所產生的參考類建立自己的複雜參數的版本類型,因此我不能傳入原始類型定義的程序集中的類型。 不知道這是否可以理解..服務引用複雜類型

問題是..我要寫一些反射式深層複製例程,以有效地建立從原始類型的服務引用生成的類? 或者是有一個更好的選擇

任何幫助,因爲曾經非常高興地收到

NAT

+0

您正在傳遞數據合同的複雜類型?我相當肯定WCF可以處理來自共享程序集的重用類型,我自己也是這樣做的。 – DoctorMick

回答

7

當你添加一個服務引用代碼,選擇Advanced,你會看到一個選項Reuse types in referenced assemblies。如果確保選中,並且引用添加到項目中,WCF將不會生成代理類型,而是使用引用的類型。

如果您已經添加的服務引用,首先引用您的共享類型,然後用鼠標右鍵單擊服務引用,並選擇Configure Service Reference得到它使用引用類型的重新生成客戶端代碼。

+0

這沒有工作過,但從這次只挑選了我需要從列表中需要的程序集,並且工作得很好.. doh! – nat

5

不,你可以做到這一點:在這裏看到我的問題:

WCF Service Reference generates its own contract interface, won't reuse mine

你可以有接口,類型的共享組件,並且兩個服務和客戶端(一個或多個)可以參考它:)

'重用引用類型..'選項確實覆蓋了複雜類型,但上面的答案還涵蓋了重用接口類型,這是IMO更好的選擇,並且不包含在VS選項中。

0

除非我誤解了,通過檢查高級設置「中引用組件重用類型」中添加服務引用,匹配在引用的組件,它的任何數據的合同將被重用,而不是再生。