0

Generic List(リスト)をパラメーターとしてWCF OperationContractに送信できますか?

それを行う唯一の方法は、リストを別のクラス内のDataMemberとしてカプセル化し、クラスをDataContractとして指定することのようです。

しかし、それは私には正しく見えません。他に方法はありますか?

EDIT1:
意図された署名:

[OperationContract]  
List<int> OperationName(List<CustomObject> objects);  

これは、クライアントでCustomObject[]に変換されます。現在、クライアントからCustomObject []を渡していますが、正常に動作しますが、渡せない理由を知りたいです。

  List <CustomObject> 

これにより、指定されたパラメーターを受け取る関数のオーバーロードされたバージョンがないというコンパイルエラーが発生します(型の不一致エラー)

編集2:
関連する質問:
1)サービス自体からこれを制御できるはずです。サービスを全世界に公開していて、wsdl / Proxyが私のOperationContractの署名を知る唯一の方法である場合はどうなりますか?
2)同じサービスコントラクトの異なるオペレーションコントラクトでSystem.ArrayとSystem.Generic.Listの両方を使用したい場合はどうなりますか?

4

1 に答える 1

2

リストは高度なタイプであり、すべてのプログラミングパラダイムで使用できるとは限りません。アレイは、比較すると、おそらくすべてのプログラミングパラダイムで利用できます。したがって、デフォルトでは、変換はプロキシwsdlの配列に分類されます

この場合、クライアントが.Netであることが確実な場合は、リストを使用するようにクライアントを変更できます。サービスはクライアントのプログラミング言語が何であるかを知らないため、クライアントがリストと配列のどちらを使用するかを決定するsvcutilの現在の設計は正しいです。この設定をサービスで利用できるようにすると、リストの概念を持たないクライアントが除外されます。

2番目の質問になりますが、操作コントラクト名が異なる限り、同じサービスで配列とリストを個別に使用できます。また、SOAではOOPの概念が制限されているため、ポリモーフィックメソッドを使用できないことにも注意してください。

次の質問には、OOPとSOAに関する詳細があります

WCFオブジェクトデザイン-OOPとSOA

于 2013-03-26T18:13:35.990 に答える