2011-07-22 4 views
4

システムにはどんなコレクションインターフェイスが優先されますか?システムでは、私はリポジトリ、サービスなどを意味するので、IEnumerable、ICollection、IListを選択する必要があります。選択するコレクションインターフェイスは何ですか?

私は理論的にはIEnumerableをを使用する方が良いだろうと思います。しかし、使い方が簡単ではありません。たとえば、インデクサーの代わりにGetElementAtメソッドを使用する必要があります。

私の現在の選択はIListのですが、私はこの決定について疑います。

答えて

5

それは本当にあなたがなど、あなたのリポジトリ、サービスの消費者に許可するアクセスの種類に降りてくる

あなたが読み取り専用に消費者をする場合コレクションを通じて、IEnumerable<T>を使用します(書き込み型のメソッドは使用できません)。

あなたは、消費者は、その後ICollection<T>のメソッドは、彼らにそれを与える、コレクションに直接追加したい場合。

は一般的に、私は頻繁に私ができるようIEnumerable<T>としてのコレクションを公開してみてください。ユーザーがコレクションに何かを追加したい場合、コレクション自体に直接書き込むのではなく、別のメソッドを呼び出す必要があります。入力を検証し、他の小切手などを実行する機会を与えます。

5

あなたはインデクサアクセスを許可したい場合は、IList<T>を使用する必要があります。一般的な規則は、すべての使用要件を満たしている可能性のある最小固有の型を使用することです。あなたの場合、それはリストのように聞こえる。 (そしてもちろん、IList<T>List<T>未満の特定です)

関連する問題