Ответ 1
IEnumerable<T>
представляет собой серию элементов, которые вы можете перебирать (используя foreach, например), тогда как IList<T>
- это коллекция, которую вы можете добавить или удалить.
Как правило, вы хотите иметь возможность изменять заказ, добавляя или удаляя OrderLines, поэтому вы, вероятно, хотите, чтобы Order.Lines был IList<OrderLine>
.
Сказав это, вы должны принять некоторые проектные решения каркаса. Например, можно ли добавить один экземпляр OrderLine в два разных порядка? Возможно нет. Поэтому, учитывая, что вы захотите проверить, следует ли добавлять Order Order к порядку, вы действительно можете поместить свойство Lines как только IEnumerable<OrderLine>
и предоставить методы Add (OrderLine) и Remove (OrderLine) который может обрабатывать эту проверку.