Je pense que vous pouvez utiliser l'un ou l'autre, mais chacun a une utilité. Au fond List
est , IEnumerable
mais vous devez compter les fonctionnalités, élément add, élément de suppression
IEnumerable n'est pas efficace pour compter les éléments
Si la collection est destinée à être en lecture seule, ou si la modification de la collection est contrôlée par le, Parent
renvoyer un IList
juste pour Count
n'est pas une bonne idée.
Dans Linq, il existe une Count()
méthode d'extension sur IEnumerable<T>
laquelle à l'intérieur du CLR un raccourci vers .Count
si le type sous-jacent est de IList
, donc la différence de performances est négligeable.
En général, je pense (opinion) qu'il est préférable de renvoyer IEnumerable lorsque cela est possible, si vous avez besoin de faire des ajouts, ajoutez ces méthodes à la classe parente, sinon le consommateur gère alors la collection dans Model qui viole les principes, par exemple manufacturer.Models.Add(model)
viole la loi de demeter. Bien sûr, ce ne sont que des directives et non des règles strictes et rapides, mais jusqu'à ce que vous ayez une pleine compréhension de l'applicabilité, suivre aveuglément est mieux que de ne pas suivre du tout.
public interface IManufacturer
{
IEnumerable<Model> Models {get;}
void AddModel(Model model);
}
(Remarque: si vous utilisez nNHibernate, vous devrez peut-être mapper vers IList privé en utilisant différents accesseurs.)