命名和可选参数,以及WCF

puf*_*pio 20 .net wcf .net-4.0 optional-parameters named-parameters

所以.Net 4增加了命名和可选参数,非常甜蜜.我不需要制作尽可能多的1行重载方法.

那可以在WCF上运行吗?

Joh*_*ers 31

WSDL无法描述可选参数,因此答案是"否".

  • 不幸的是,[OperationContract]只是默默地将可选参数转换为必需参数:( (2认同)
  • @epalm:它没有转换任何东西.它只是忽略了不相关的事情. (2认同)
  • @epalm:这是我在答案中给出的原因:WSDL和MEX对可选参数以及任何其他特定于平台的功能一无所知.例如,观察它们不支持`async`. (2认同)

Pre*_*gha 20

由于这些是编译器语义,我会说不.但是你希望它们能够以下面的方式工作.

在服务代码端,所有代码都接受默认参数.

在客户端,我注意到VS2010上的"添加服务引用"工具不采用默认值并将它们添加到生成的代理中.所以你必须生成你自己的代理.

这样,如果在客户端合同实现中指定了缺省值,则客户端代码可以使用缺省值.

我认为命名参数也是如此.

总而言之,是的,但这些东西不是通过WCF传播的.所有这一切都是客户端代理必须作为适当的参数发送到通道工厂.

  • 其根本原因在于,WSDL和MEX都不了解C#编程语言的功能.他们无法描述可选参数. (2认同)