WCF OperationContractる汎用のコレクション型ばいいな?
-
21-09-2019 - |
質問
い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コンテキストで)それはそれらから離れて滞在することをお勧めします、それは遅延実行に来る場合は特に、奇妙なエラーのすべての種類を取得することができます。
これは本当に唯一の葉の配列を、彼らは意図残りのオプションの最高ます。
を通信するため、