1. ホーム
  2. collections

[解決済み] エンティティのコレクションにおけるIListとIEnumerableの比較

2022-05-04 17:46:36

質問

ドメイン内にリストを持つエンティティがある場合、それらはIListsまたはIEnumerablesとして公開されるべきでしょうか?例:OrderにはOrderLinesの束がある。

どのように解決するのですか?

IEnumerable<T> は、(foreachなどを使って)反復処理できる一連の項目を表しますが、一方 IList<T> は、追加や削除が可能なコレクションです。

一般的には、OrderLines を追加したり削除したりして Order を変更できるようにしたいので、Order.Lines は IList<OrderLine> .

とはいえ、フレームワークの設計上、決めておくべきこともあります。例えば、同じOrderLineのインスタンスを2つの異なるオーダーに追加することが可能であるべきでしょうか?おそらく、そうではないでしょう。そこで、OrderLineがオーダーに追加されるべきかどうかを検証できるようにしたいと考えると、確かにLinesプロパティを単なる IEnumerable<OrderLine> そして、その検証を処理できる Add(OrderLine) と Remove(OrderLine) メソッドを提供します。