0

我們可以將通用列表(列表)作爲參數發送給WCF OperationContract嗎?我們可以將通用列表(List <customObject>)作爲參數發送給WCF OperationContract嗎?

好像做到這一點的唯一方法是封裝的列表作爲另一個類中的數據成員,並指定類作爲DataContract:

但是,這不看我的權利。有沒有其他方法?

EDIT1:
旨在簽名:

[OperationContract] 
List<int> OperationName(List<CustomObject> objects); 

這轉化爲CustomObject []在客戶端。我目前從我的客戶端通過CustomObject [],它工作正常,但我想知道爲什麼我不能通過

List <CustomObject> 

,給了我一個編譯錯誤,說有這需要的功能沒有重載版本指定的參數(類型不匹配誤差)

編輯2:
相關問題:
1)I應該能夠從服務本身進行控制。如果我將我的服務暴露給整個世界,而且wsdl/Proxy是他們知道OperationContract簽名的唯一方式?
2)如果我想在同一服務合同的不同運營合同中使用System.Array和System.Generic.List,該怎麼辦?

+0

更多詳情您可以共享該國稅發沒有工作合同opertaion預期的簽名? – Dhawalk 2013-03-26 16:28:50

+0

編輯與簽名*的問題,感謝 – Gadam 2013-03-26 16:50:45

+0

這個問題是非常相似的什麼張貼在 http://stackoverflow.com/questions/8445502/list-vs-arrays-in-a-generated-proxy-class -in-c-sharp – Dhawalk 2013-03-26 16:59:29

回答

2

列表是一種高級類型,可能不適用於所有編程範例。在所有的編程範例中,數組可以用於比較。因此在默認情況下,翻譯將落入代理數組wsdl

現在在這種情況下,如果您確定您的客戶端是.Net,則可以將客戶端更改爲使用List。由於該服務並不知道客戶端的編程語言是什麼,因此客戶機決定使用列表還是數組的正確設置是svcutil的當前設計。如果您將此設置提供服務,則排除不具有列表

概念的客戶端第二個問題,只要您的操作合同名稱不同,您就可以使用數組並在同一個服務中以特別的方式列出。另請注意,OOP概念在SOA中受到限制,這意味着您不能擁有多態方法。

以下問題有關於OOP和SOA

WCF Object Design - OOP vs SOA

+0

非常好的解釋,謝謝。 「...現在在這種情況下,如果你確定你的客戶端是.Net,你可以改變客戶端使用列表」......無論如何,我的.Net客戶端可以知道他可以使用列表,而我沒有告訴他?我想人們會期待這樣的事情。無論如何,非常感謝讓我的許多惡魔休息......目前;) – Gadam 2013-03-26 18:51:13

相關問題