Bence ikisini de kullanabilirsin, ama her birinin bir faydası var. Temelde öyledir List
, IEnumerable
ancak 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, Parent
bir IList
just for döndürmek Count
iyi 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>
.Count
IList
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.)