2009-06-10 26 views
2

私はWCFサービスメソッドを持っていますが、これはコレクション型として戻り値型用に記述したものです。WCFメソッドの戻り値の型を汎用コレクションから配列に変更するのはなぜですか?

私はプロキシクラスを生成し、クライアントからメソッドを消費する場合、メソッドの戻り値の型はコレクションから配列に変更されます。

どうしてですか?

+0

これはよくある質問ですか?重複?私はこれが以前に尋ねられ、答えられたことを誓った。 – Cheeso

答えて

2

svcutilに、必要なジェネリックタイプとしてタイプを生成するように指示する必要があります。あなたはsvcutilコマンドにこのスイッチを追加することによって、次の操作を行います。

svcutil ..blah... /ct:System.Collections.ObjectModel.Collection`1 

/ct/collectionTypeの略です。この場合、Collection<T>と指定しましたが、System.Collections.Generic.List<T>と同じように簡単に使用できます。

1

Visual Studioで "サービス参照の追加"を使用してプロキシを生成する場合、戻り値の種類(汎用型を含む)を指定できるダイアログボックスが表示される[詳細]ボタンがあります。

0

Visual Studioを使用している場合は、サービス参照を右クリックして構成することができます。 次に、配列をコレクションとして扱う方法をアプリに伝えるオプションがあります(詳細設定では?)。

5

注意 - WCFは相互運用可能なシステムでもあります。あなたのもう一方の端は、.NETの汎用リストを理解できないPHPまたはJavaまたはRubyのクライアントになる可能性があります。

AndrewとJimmieの2つのオプションを使用して汎用リストを指定することができます。これは、DataContractSerializer(WCFのデフォルトの選択肢)を使用する場合にのみ有効です。ただし、何らかの理由でサービスやデータコントラクトがXmlSerializerを使用する必要がある場合、これらの設定は役に立ちません。リストは再び配列に変換されます。

これらのオプションを試してみてくださいしかし、ジェネリックリストを相互運用可能なオブジェクトの配列に変換するだけの理由があることに注意してください。

マーク

+0

+1良い説明。 –

関連する問題