IList vs IEnumerable for Collections on Entities

Kiedy mam encje w mojej domenie z listami rzeczy, czy powinny one być wystawione jako Ilisty lub IEnumerable? Np. Order ma kilka Orderline.

Author: pondermatic, 2008-12-18

2 answers

IEnumerable<T> reprezentuje serię elementów, które można iterować (na przykład za pomocą foreach), podczas gdy IList<T> jest kolekcją, którą można dodać lub usunąć.

Zazwyczaj chcesz mieć możliwość modyfikacji zamówienia poprzez dodanie lub usunięcie linii zamówienia, więc prawdopodobnie chcesz zamówić.Lines to be an IList<OrderLine>.

Powiedziawszy to, są pewne ramowe decyzje projektowe, które powinieneś podjąć. Na przykład, czy możliwe jest dodanie tej samej instancji OrderLine do dwóch różnych rozkazów? Pewnie nie. Biorąc pod uwagę, że chcesz mieć możliwość walidacji, czy linia orderowa ma zostać dodana do zamówienia, możesz rzeczywiście chcieć wyświetlić właściwość Lines jako tylko IEnumerable<OrderLine> i podać metody Add(OrderLine) i Remove (OrderLine), które obsługują tę walidację.

 179
Author: Matt Hamilton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-08 15:21:51

Większość czasu kończę z IList nad IEnumerable, ponieważ IEnumerable nie ma metody Count i nie możesz uzyskać dostępu do kolekcji przez indeks (chociaż jeśli używasz LINQ, możesz to obejść za pomocą metod rozszerzeń).

 23
Author: JoshSchlesinger,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-09-14 04:19:18