Против объекта IList и IEnumerable для коллекций на лиц
когда у меня есть сущности в моем домене со списками вещей, они должны быть представлены как ILists или IEnumerables? Например, у заказа есть куча линий заказов.
2 ответа:
IEnumerable<T>
представляет собой ряд элементов, которые можно перебирать (например, с помощью foreach), тогда какIList<T>
это коллекция, которую можно добавить или удалить.обычно вы хотите иметь возможность изменять заказ, добавляя или удаляя строки заказа к нему, так что вы, вероятно, хотите заказать.Линии, чтобы быть
IList<OrderLine>
.сказав это, есть некоторые рамочные проектные решения, которые вы должны сделать. Например, нельзя добавить один и тот же экземпляр OrderLine в два разных заказа? Скорее всего, нет. Поэтому, учитывая, что вы хотите иметь возможность проверить, следует ли добавить OrderLine в заказ, вы действительно можете захотеть отобразить свойство Lines как только
IEnumerable<OrderLine>
, и предоставить Add(OrderLine) и Remove (OrderLine) методы, которые могут обрабатывать эту проверку.