2012-05-01 4 views
0

私のWCFサービス契約では、リストを返すasynメソッドが宣言されていますが、クライアントのメソッドから戻り値を受け取ると、配列。私の契約は以下の通りです:私のクライアントでWCF:非同期契約で返しますリスト<T>を返しますが、クライアントで配列を受け取ります

[OperationContract(AsyncPattern = true)] 
IAsyncResult BeginGetUsers(Paramusers paramUserParameters, AsyncCallback callback, object state); 
List<Users> EndGetUsers(IAsyncResult result); 

私は次のコードを持っている:それはことを言うので、クライアントで

Task<List<Users>> task = Task<List<Users>>.Factory.FromAsync(_proxy.Proxy.BeginGetUsers, _proxy.Proxy.EndGetUsers, myParameters, null); 
List<Users> myUsers = await task; 

を、私は、FromAsyncメソッドの2番目のパラメータにエラーが発生しますEndGetUsersメソッドは、リストではなく配列を返します。

私はユーザーの配列を使用しようとし、正常に動作しますが、配列ではなく非同期メソッドからリストを受け取りたいと思います。出来ますか?

ありがとうございました。 ダイムロク。

答えて

7

クライアントプロキシを作成する場合、配列を配列ではなくリストとして表示するように指定します。「サービス参照の追加」ダイアログを使用する場合は「詳細」ボタンを選択し、コレクションタイプドロップでSystem.Collections.Generic.Listを選択します - ダウンリスト。

あなたがsvcutilを使用する場合は、使用するコレクションのタイプを指定する/collectionType(または/ct)パラメータを使用することができます。

svcutil http://the.service.com/service.svc /ct:System.Collections.Generic.List`1 
+0

まあ、私はないVS GUIで、svcutilsでプロキシを作成します。サービス参照を追加しようとするとサービスが見つからないため、常にsvcUtilsを使用してService.csを作成し、このクラスを使用してクライアントにプロキシを作成します。 svcutilsであなたのソリューションを使用することは可能ですか?ありがとう。 –

+0

もう少し泣きました。私はリストのタイプのみを選択するか、それらの多くを使用することができますか?たとえば、いくつかのメソッドではリストを返し、他のメソッドではoversableCollectionを返したいとします。 –

+0

svcutilを使用すると、/ ctオプションを使用することができます(その答えを更新しました)。また、設定はグローバルで、1つのコレクションタイプでは1つの操作を、他のコレクションタイプでは1つの操作を行うことはできません。しかし、生成されたプロキシを編集して 'T []'から 'List 'または 'ObservableCollection 'に変更することはできますが、これはWCFに関する限り同等です。 – carlosfigueira

関連する問題