9

如果我的合同如下所示:

[OperationContract]
void DoSomething(int id, out string moreInfo);

这最终看起来像:

string DoSomething(int id);

当您导入 Web 服务引用时。是否可以影响参数顺序的自动转换?在函数签名的开头找到所有输出参数已经令人惊讶,但这仍然可行,但我们希望 void-methods 继续成为 void-methods。或者这是 SOAP 限制?

4

1 回答 1

4

它似乎基于 WSDL 限制: http ://social.msdn.microsoft.com/Forums/en-US/wcf/thread/48b5992f-f7bd-4b67-8299-514d1780fa9a

WSDL 不显示原始方法签名;相反,它将输入参数显示为一组,将输出参数显示为另一组。

无法将返回值与输出参数分开的限制在 WSDL 中。但这意味着我认为 void 方法的限制将成为 svcutil.exe 的一部分。没有理由不能在 svcutil 上进行开关以不将第一个输出移动到返回值,但这将是对 ms connect 功能的请求。

如果您的问题是一致性,您可以返回一个简单的状态 int 或 bool,而不是 void,但如果您已经有几十种方法,我敢肯定这不是一个完美的答案。

于 2012-07-02T14:50:14.550 回答