在C#中烘焙可选参数和WebService调用?
阿法克: 向从调用的公共方法添加可选参数 另一个程序集需要重新编译这两个程序集-就像 尽管参数是强制性的 在这种情况下,我想知道WebService 那我呢?使用在C#中烘焙可选参数和WebService调用?,c#,.net,web-services,optional-parameters,C#,.net,Web Services,Optional Parameters,阿法克: 向从调用的公共方法添加可选参数 另一个程序集需要重新编译这两个程序集-就像 尽管参数是强制性的 在这种情况下,我想知道WebService 那我呢?使用添加的可选param webservice方法 例如: 假设谷歌的webservice方法是: void DoWork(int a , int b) 然后改成了 void DoWork(int a , int b , isDefault=false) 作为消费者,我必须重新创建代理文件吗 我的理解是可选参数是语法糖 您仍然会得到
添加的可选param webservice方法
例如:
假设谷歌的webservice方法是:
void DoWork(int a , int b)
然后改成了
void DoWork(int a , int b , isDefault=false)
- 作为消费者,我必须重新创建代理文件吗李>
- 我的理解是可选参数是语法糖
您仍然会得到一个重载,该重载将所有参数都作为必需参数,但是当编译器遇到没有指定可选参数的方法调用时,它会自动将可选参数的默认值插入IL中的调用站点
这对Web服务的影响取决于可选参数如何通过代理传播
如果它是对WSDL的一个非破坏性更改,那么我的猜测是它不会有什么不同,您不需要重新生成代理,并且从WSDL契约的角度来看,由现有代理生成的请求仍然有效
但是,如果这是对WSDL的突破性更改,那么您显然需要重新生成代理,并且需要重新编译代理方法的任何调用站点。我认为您必须重新创建。我已经创建了一个web服务(SOAP),有时我只是更改了参数字母的大小写。我的客户停止工作,不得不重新创建代理。对于调用soapweb服务的测试,您可以下载SoapUI()。有时它非常方便。我认为您需要指定用于此目的的确切API,以便对此负责。请注意,谷歌不会在C#中指定其API。谷歌只是“代码我不能触摸”的一个例子。我可能会问:“如果我的朋友构建了一个只需要2个参数的Web服务,一个月后他添加了一个可选的参数……我应该重新创建吗……”@RoyiNamir您的代理是如何生成的?您是在WSDL上运行xsd.exe之类的工具,还是通过Visual Studio添加Web服务引用,或者通过其他方式?如果这是对WSDL的非破坏性更改,那么我的猜测是,与对WSDL的破坏性更改相比,这不会有什么区别,那么您显然需要重新生成代理,谢谢,但您提供了选项。我们已经知道了。我想我需要一个答案。对不起,我可能有点困惑——我想说“如果这是一个突破性的改变……”。在编辑中更新。为了知道这是否是一个突破性的改变,您能解释一下您是如何生成代理的吗?我是从WSDL假设的,但也许不是?