C#中的Baked可选参数和Web服务调用?

时间:2012-12-10 12:21:04

标签: c# .net web-services optional-parameters

AFAIK:

  

将可选参数添加到从中调用的公共方法   另一个程序集需要重新编译两个程序集 - 就像   虽然参数是强制性的。

在这种情况下,我想知道WebService。

我呢 - 使用added optional param webservice method

例如:

让我们说Google的网络服务方法是:

void DoWork(int a , int b)

并且已更改为

void DoWork(int a , int b  , isDefault=false)
  • 我必须作为消费者需要重新创建代理文件吗?

1 个答案:

答案 0 :(得分:3)

我的理解是可选参数是语法糖。

您最终仍然会将所有参数作为必需参数重载,但是当遇到没有指定可选参数的方法调用时,编译器会自动将可选参数的默认值插入IL中的调用站点。

这对Web服务的影响取决于可选参数如何通过代理传播。

如果它是对WSDL的非破坏性更改,那么我的猜测是它不会产生影响,您不需要重新生成代理,以及现有生成的请求从WSDL合同的角度来看,代理仍然有效。

但是,如果它是对WSDL的重大更改,那么您显然需要重新生成代理,并且需要重新编译任何调用站点到代理方法。