que explained entre ejemplo diferencia collections ienumerable ilist

collections - explained - ilist c# ejemplo



IList versus IEnumerable para colecciones en entidades (2)

La mayoría de las veces termino yendo con IList sobre IEnumerable porque IEnumerable no tiene el método Count y no puedes acceder a la colección a través de un índice (aunque si estás usando LINQ puedes evitar esto con métodos de extensión).

Cuando tengo entidades en mi dominio con listas de cosas, ¿deberían estar expuestas como ILists o IEnumerables? Por ejemplo, Order tiene un montón de OrderLines.


IEnumerable<T> representa una serie de elementos sobre los que puede iterar (utilizando foreach, por ejemplo), mientras que IList<T> es una colección a la que puede agregar o eliminar.

Por lo general, querrá poder modificar un pedido añadiéndole o quitándole OrderLines, por lo que probablemente desee que Order.Lines sea un IList<OrderLine> .

Una vez dicho esto, hay algunas decisiones de diseño del marco que debe tomar. Por ejemplo, ¿debería ser posible agregar la misma instancia de OrderLine a dos órdenes diferentes? Probablemente no. Entonces, dado que querrá poder validar si se debe agregar una OrderLine a la orden, es posible que desee IEnumerable<OrderLine> la propiedad Lines como solo IEnumerable<OrderLine> , y proporcionar Add (OrderLine) y Remove (OrderLine) métodos que pueden manejar esa validación.