3

フォームでカスタム リストを返す WCF サービスを使用しようとしていますList<StockData>

からのメソッド署名は次のIService.csとおりです。

 [OperationContract]
     List<StockData> orderStockData(string compName1, string compName2, string compName3);

しかし、サービス参照を通じて自分の Web サイトで参照しようとすると、次のようになります。

List<StockData> list = new List<StockData>();
list = myProxy.orderStockData(txtinput1.Text, txtinput2.Text, txtinput3.Text);

次のエラーが表示されます。

タイプ 'ServiceReference1.StockData[]' を Systems.Collections.Generic.List に暗黙的に変換することはできません

これを解決するための助けは素晴らしいでしょう。ありがとう!

4

4 に答える 4

18

サイトへの参照を追加したときにDataType==>の下に , (これもデフォルトです) をCollection Type指定したため、プロキシはリストではなく配列を返します。System.Array

ここに画像の説明を入力

Web サービスへの参照を追加するときに、事前に指定System.Collection.Generic.Listして指定すると、契約と同じ戻り値の型が得られます。

しかし、それをしたくない場合でも、配列を使用して、次を使用してリストに変換できますToList

編集:

お気に入り:

List<StockData> list = new List<StockData>();
list=(myProxy.orderStockData(txtinput1.Text, txtinput2.Text, txtinput3.Text)).ToList();
于 2013-03-22T05:23:17.323 に答える
0

このインターフェースを実装しているので、すべてが機能するはずなIList<StockData>ので、を使用する必要があります。StockData[]

new List<T>()また、すぐに別の値で上書きするため、呼び出す必要はありません。

于 2013-03-22T05:25:35.467 に答える
0

List<T>プロキシでまたはを使用する場合は、サービス参照設定を変更できますT[]

設定を変更するには、ソリューションエクスプローラーでプロジェクトのサービス参照を右クリックします。ピックし"Configure Service Reference"ます。"Collection type"ピックでSystem.Collections.Generic.List

于 2013-03-22T06:02:47.787 に答える
0

私はこの投稿を調べていましたが、以前にも同様のエラーに直面しましたが、上記の回答のいずれも問題を解決しませんでした.

私にとってうまくvarいったのは、以下のように使用することです

//List<StockData> list = new List<StockData>(); // no need of this

var list=myProxy.orderStockData(txtinput1.Text, txtinput2.Text, txtinput3.Text).Tolist();
于 2014-07-11T12:43:14.007 に答える