Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C#中烘焙可选参数和WebService调用?_C#_.net_Web Services_Optional Parameters - Fatal编程技术网

在C#中烘焙可选参数和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) 作为消费者,我必须重新创建代理文件吗 我的理解是可选参数是语法糖 您仍然会得到

阿法克:

向从调用的公共方法添加可选参数 另一个程序集需要重新编译这两个程序集-就像 尽管参数是强制性的

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

那我呢?使用
添加的可选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假设的,但也许不是?