Bence ikisini de kullanabilirsin, ama her birinin bir faydası var. Temelde öyledir List, IEnumerableancak sayma işlevine sahipsiniz, öğe ekleyin, öğeyi kaldırın
IEnumerable, öğeleri saymak için verimli değil
Koleksiyonun salt okunur olması amaçlanıyorsa veya koleksiyonun modifikasyonu tarafından kontrol ediliyorsa, Parentbir IListjust for döndürmek Countiyi bir fikir değildir.
Linq'te, CLR'nin içinde temeldeki türün olup olmadığına kısayol olacağı bir Count()genişletme yöntemi vardır , bu nedenle performans farkı ihmal edilebilir.IEnumerable<T>.CountIList
Genel olarak, mümkün olduğunda IEnumerable'ı iade etmenin daha iyi bir uygulama olduğunu düşünüyorum (görüş), eğer eklemeler yapmanız gerekiyorsa, daha sonra bu yöntemleri ana sınıfa ekleyin, aksi takdirde tüketici, Model içindeki koleksiyonu yönetiyor ve bu da ilkeleri manufacturer.Models.Add(model)ihlal ediyor , örn . demeter. Elbette bunlar sadece yönergelerdir ve zor ve hızlı kurallar değildir, ancak uygulanabilirliği tam olarak kavrayana kadar, körü körüne takip etmek, hiç takip etmekten iyidir.
public interface IManufacturer
{
IEnumerable<Model> Models {get;}
void AddModel(Model model);
}
(Not: nNHibernate kullanıyorsanız, farklı erişimciler kullanarak özel IList ile eşlemeniz gerekebilir.)