質問

いWCF webサービスの実現方法を返します一般的です。今、私の質問はばいいなと ICollection<T>, List<T>, IList<T>, IEnumerable<T> または何か?

はないかと思う List<T> が来のは避けたい CA1002誤差, が、基になるタイプする List<T>.

色んな聴覚をおかけ、好ましくはいいかんお返事ありがとうございます。.

かまいません。

役に立ちましたか?

解決

この誤りなどCA1002思っ適用します。は、WCFサービスは図書館でのエンドポイントが直列化さらディーソープ、休憩等

だるまなインターフェースなど ICollection<T> または IList<T>, を取得するでしょうエラーの種類できない直列化されます。実際、 List<T> 入れるのが最良の選択です。時代が発生するクライアント側では、なってい配列としてデフォルトでは、多くの場合はほとんどの人に変更するには、 List<T>, で90%の時間は、どんな選択なので、このタイプのクライアントがいます。

まだ一般的に良い練習がない"戻る"コレクションからピ操作またはwebサービスです。ではあまりを作るプロキシクラスが含まれる集い、戻る、すなわち:

[OperationContract]
OrdersResult GetOrders(OrderRequest request);

がプロキシクラスはこのような

[DataContract]
public class OrdersResult
{
    [DataMember]
    public List<Order> Orders { get; set; }
}

そのように決定をした場合は、必要な追加データからの要請に対応できうることなく破壊に変化するサービスです。


補足:のこと、WCFる WCF知らなる特定の型のみを使用のための送信データです。 がクラスには露出を通して、WCFサービス、WCF想定しておきの一部のいずれか 要求 または 対応, の場合は一部の 要求, そのタイプ 必ずコンクリートできない不変の.その理由をお届制限のような必要性セッター.

だしていることができるので使用コンクリート変更可能なコレクション型、多くの場合、その配列のいずれかまたは汎用の一覧です。

他のヒント

私の意見では、シーケンスを公開するサービスとデータコントラクトは明らかに、彼らはののDTOのなど電線の上を移動しているので、それらのシーケンスは、<強い/>不変であることを知らせる必要があります。それは多くの意味が違う層から受信したシーケンスに追加や削除を行うことはありません。むしろ、あなたはそのデータを読み、それに何かをしたい。

ことを考えると、私は本当にIEnumerable<T>を使用することを好むだろうが、残念ながら、これはちょうどWCFでうまく動作しません。あなたはとても(WCFコンテキストで)それはそれらから離れて滞在することをお勧めします、それは遅延実行に来る場合は特に、奇妙なエラーのすべての種類を取得することができます。

これは本当に唯一の葉の配列を、彼らは意図残りのオプションの最高ます。

を通信するため、
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top