Cuando tengo entidades en mi dominio con listas de cosas, ¿deberían estar expuestas como ILists o IEnumerables? P.ej. Order tiene un montón de OrderLines.IList vs IEnumerable for Collections on Entities
Respuesta
IEnumerable<T>
representa una serie de elementos que puede iterar (utilizando foreach, por ejemplo), mientras que IList<T>
es una colección que puede agregar o eliminar.
Normalmente, querrá poder modificar un pedido añadiendo o quitando OrderLines, por lo que probablemente desee que Order.Lines sea un IList<OrderLine>
.
Habiendo dicho eso, 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. Por lo tanto, dado que querrá poder validar si se debe agregar una OrderLine a la orden, es posible que desee visualizar la propiedad Lines como solo IEnumerable<OrderLine>
y proporcionar los métodos Add (OrderLine) y Remove (OrderLine) que pueden manejar esa validación
La mayor parte del tiempo termino yendo con IList sobre IEnumerable porque IEnumerable no tiene el método Count y no puede acceder a la colección a través de un índice (aunque si está utilizando LINQ puede evitar esto con la extensión métodos).
creo que siempre se puede crear una instancia de una implementación de IList con el IEnumerable si necesita acceder al método de conteo y similares, por ejemplo: IEnumerable
IEnumerable
"no puede acceder a la colección a través de un índice": ¿qué ocurre con el método 'ElementAt'? – ivamax9
- 1. ¿Por qué ArrayList implementa IList, ICollection, IEnumerable?
- 2. ¿Qué debo usar un IEnumerable o IList?
- 3. IEnumerable <> to IList <>
- 4. IEnumerable <T> VS VS IList <T> IQueryable <T>
- 5. NHibernate ISet Vs IList
- 6. FindInstalt on IEnumerable
- 7. IList <T> vs IEnumerable <T>. ¿Qué es más eficiente IList <T> o IEnumerable <T>
- 8. EF ICollection Vs Lista Vs IEnumerable Vs IQueryable
- 9. ¿Qué interfaz debería devolver mi servicio? IQueryable, IList, IEnumerable?
- 10. Conversión de IEnumerable <T> a IList
- 11. Entity Framework vs Linq to Entities vs Linq to SQL
- 12. Directriz: while vs for
- 13. Symfony2 Embedded Entities
- 14. check for ('div') mouseenter on ('a') mouseleave
- 15. ¿Alguna Xampp Like For Ruby On Rails?
- 16. UI help for Notification on icon
- 17. SQLAlchemy - order_by on relationship for join table
- 18. jQuery's .bind() vs. .on()
- 19. Covarianza e IList
- 20. C#/.NET equivalente para Java Collections. <T> emptyList()?
- 21. JavaScript Collections API?
- 22. DataTables vs IEnumerable <T>
- 23. .NET Entity Framework - IEnumerable VS. IQueryable
- 24. IEnumerable, IEnumerator vs foreach, cuándo usar lo
- 25. Doctrine 2, query inside entities
- 26. Ruby vs. Ruby on Rails
- 27. jruby on Rails vs Griales
- 28. jQuery .on(); vs JavaScript .addEventListener();
- 29. jquery on vs click methods
- 30. Ruby on Rails vs Django
¿Sería inteligente implementar ambos? – PedroC88
No lo haría. Un IList hereda de IEnumerable. – Unknown1987