2011-05-22 38 views
3

我開發的暴露服務元數據以實現下列服務合同WCF服務的應用程序:可以params關鍵字通過WSDL定義表示

[ServiceContract] 
public interface IService 
{ 
    [OperationContract] 
    object Execute(string action, params object[] args); 
} 

添加服務引用後,我注意到,有在沒有params關鍵字服務合同及其在生成的Reference.cs文件中的執行情況。

在WSDL定義中是否有params副本?

或者是params某些特定於C#並且無法通過WSDL定義表達的服務客戶端生成器不知道params應該在生成期間添加嗎?

回答

3

params只是語法糖,它允許您在不傳遞準備好的數組的情況下調用期望對象數組的方法。 WCF不知道這一點 - 它應該只是期望數組對象。順便說一句。將object數組傳遞給服務操作可能會導致多個問題,因爲如果傳遞一個自定義對象作爲參數,WCF可能不知道如何序列化該對象。

+0

謝謝,我只是需要確認。我很清楚這些問題。我不知道該服務可能會有哪些類型。因此,該服務配置了自定義端點行爲,可通過配置添加已知類型的服務。嗯,我不太確定在傳入對象序列化期間是否會出現問題(它是客戶端,對不對?)。我認爲這隻會在反序列化過程中發生,因爲服務不知道接收到的SOAP消息的部分類型(當使用SOAP時)。糾正我,如果我錯了。 – 2011-05-22 10:50:01

+0

如果您使用已知的類型並且在WSDL中描述了類型,那麼您應該沒問題。 – 2011-05-22 10:51:23

+0

我想知道是否有一種方法可以在WSDL定義中包含自定義數據,該自定義數據可以被自定義服務參考生成器工具用來包含'params'關鍵字。你碰巧知道WSDL是否有一個可以包含任意XML的元素? – 2011-05-22 11:41:51

相關問題