2010-04-15 57 views

回答

19

因爲這些是編譯器的語義我會說不。但是,你會期望他們以唯一的方式工作。

在服務代碼端,所有代碼都會接受默認參數。

在客戶端,我注意到VS2010上的'添加服務引用'工具不採用默認值並將它們添加到生成的代理中。所以你必須生成你自己的代理。

以這種方式,如果在客戶端合同實施中指定了默認值,則客戶端代碼可以使用默認值。

我會這樣的命名參數也是如此。

總而言之是的,但東西不是通過WCF進行。發生的一切就是客戶端代理必須將其作爲適當的參數發送到通道工廠。

+2

其中的根本原因是WSDL和MEX都不瞭解C#編程語言的特性。他們無法描述可選參數。 – 2012-11-12 21:42:32

30

WSDL無法描述可選參數,所以答案是「否」。

+2

不幸的是,[OperationContract]只是默認地將可選參數轉換爲所需的參數:( – epalm 2011-12-05 16:21:29

+1

@epalm:它不會轉換任何東西,它只是忽略那些不相關的東西 – 2011-12-05 16:38:21

+0

說明:當我託管一個WCF服務並生成代理通過元數據交換,生成的Reference.cs中的方法具有所需的參數,即使服務中的方法包含可選參數。 – epalm 2011-12-05 16:52:41