2010-04-15 61 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