-1

AFAIK:

将可选参数添加到从另一个程序集调用的公共方法需要重新编译两个程序集——就好像该参数是必需的一样。

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

我呢 - 使用added optional param webservice method?

例如 :

假设谷歌的网络服务方法是:

void DoWork(int a , int b)

它被改为

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

1 回答 1

3

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

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

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

如果它是对 WSDL 的非破坏性更改,那么我的猜测是它不会产生影响,您不需要重新生成代理,并且现有代理生成的请求仍然有效WSDL 契约的观点。

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

于 2012-12-10T12:37:15.690 回答