2011-11-28 33 views
0

我做了什麼我的代碼看起來像一個簡單的引擎收錄演示的例子:http://pastebin.com/GpDhPRVm如何允許客戶服務在WCF服務中構建複雜對象?

我的實際Process對象是極其複雜的,包括添加任務,文檔,工作流,等集合到一個Process對象,並通過方法設置屬性,等

PasteBin example是如此簡單,因爲我可以讓它顯示事情分解的地方。在我的服務中包含Process對象的CreateNewProcess方法(如下面的代碼所示)允許服務用戶在客戶端的實例中自動「查看」對象,屬性和枚舉器。

<ServiceContract()> 
Public Interface ICreateProcess 

    <OperationContract()> 
    Sub CreateNewProcess(ByVal newprocess As Process) 

End Interface 

然而,它不允許他們使用任何的像「AddTask」方法(shown in PasteBin example)的方法和它也不會暴露TaskTaskCollection對象。即使我用DataContractOperationContract等裝飾方法,它們仍然對客戶端服務不可見。

這是我的主要問題:我需要的客戶服務能夠完全「打造」的Process對象,然後將它傳遞到CreateNewProcess方法。

另一個小記:(避免評論問我這件事)是,我確信,我的所有屬性都是簡單類型是可互操作的,因爲這需要能夠爲Java的工作 - 不只是.NET客戶端。

回答

0

好的,我從我的一個朋友那裏得到了一點幫助。

無法使用.svc服務類以外的所有方法;只有屬性,枚舉和子對象纔會轉化爲客戶端。 (我想這個)

然後,而不是使用Collection,你必須使用通用List類型。

所以,與其這樣:

Public Tasks As New TaskCollection() 'where TaskCollection inherits from Collection 

我需要做的是:

Public Tasks As List(Of Task) 

而且客戶端將只需要建立自己的任務的數組,並將其分配給噸。任務屬性。

這現在就像一種魅力:http://pastebin.com/rt8HwsXY

相關問題