9

私の契約が次のように見える場合:

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

これは最終的に次のようになります。

string DoSomething(int id);

Web サービス参照をインポートするとき。パラメータの順序の自動変換に影響を与えることはできますか? 関数シグネチャの先頭にすべての out-parameters があることはすでに驚くべきことでしたが、それでも機能しましたが、void-methods は void-method であり続けたいと考えています。それとも、これは SOAP の制限ですか?

4

1 に答える 1

4

WSDL の制限に基づいているようです: http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/48b5992f-f7bd-4b67-8299-514d1780fa9a

WSDL は元のメソッド シグネチャを示しません。代わりに、入力パラメーターをグループとして表示し、出力パラメーターを別のグループとして表示します。

戻り値を out パラメータから分離できないという制限は、WSDL にあります。しかし、それは void メソッドの制限が svcutil.exe の一部になることを意味します。最初の出力を戻り値に移動しないように svcutil を切り替えることができない理由はありませんが、それは ms connect の機能に対する要求になります。

問題が一貫性である場合は、void ではなく単純なステータス int または bool を返すことができますが、既に数十のメソッドがある場合、それは完全な答えではないと確信しています。

于 2012-07-02T14:50:14.550 に答える