どちらでも使えると思いますが、それぞれに用途があります。基本的にListはIEnumerableですが、カウント機能、要素の追加、要素の削除があります
IEnumerableは要素のカウントに効率的ではありません
コレクションが読み取り専用であることが意図されている場合、またはコレクションの変更がによって制御されているParent場合は、IList正当な理由を返すCountことはお勧めできません。
Linqには、基になる型がの場合にCLR内でショートカットするCount()拡張メソッドがIEnumerable<T>あるため、パフォーマンスの違いは無視できます。.CountIList
一般的に私は(意見)あなたが、その後の追加を行う親クラスにこれらのメソッドを追加する必要がある場合など、それ以外の消費者は、その後の原則に違反するモデル内のコレクションを管理している、可能性のIEnumerableを返すために、より良い練習と感じるmanufacturer.Models.Add(model)の法律に違反しますデメテル。もちろん、これらは単なるガイドラインであり、厳密な規則ではありませんが、適用性を完全に理解するまでは、盲目的にフォローすることは、まったくフォローしないよりも優れています。
public interface IManufacturer
{
IEnumerable<Model> Models {get;}
void AddModel(Model model);
}
(注:nNHibernateを使用している場合は、異なるアクセサーを使用してプライベートIListにマップする必要がある場合があります。)