태그 보관물: ienumerable

ienumerable

엔터티 컬렉션에 대한 IList와 IEnumerable 엔터티가 있으면 IList 또는 IEnumerables로 노출되어야합니까? 예를

도메인에 항목 목록이있는 엔터티가 있으면 IList 또는 IEnumerables로 노출되어야합니까? 예를 들어 Order에는 많은 OrderLine이 있습니다.



답변

IEnumerable<T>는 (예를 들어 foreach를 사용하여) 반복 할 수있는 일련의 항목을 나타내지 만 IList<T>추가하거나 제거 할 수있는 모음입니다.

일반적으로 OrderLine을 추가하거나 제거하여 Order를 수정할 수 있으므로 Order.Lines가 IList<OrderLine>.

그러나 프레임 워크 디자인 결정을 내려야합니다. 예를 들어, 동일한 OrderLine 인스턴스를 두 개의 다른 주문에 추가 할 수 있어야합니까? 아마 아닙니다. 따라서 OrderLine을 주문에 추가해야하는지 여부를 검증 할 수있게하려면 실제로 Lines 특성 만으로 표시 IEnumerable<OrderLine>하고 처리 할 수있는 Add (OrderLine) 및 Remove (OrderLine) 메소드를 제공 할 수 있습니다. 그 유효성 검사.


답변

IEnumerable에는 Count 메서드가 없으며 인덱스를 통해 컬렉션에 액세스 할 수 없기 때문에 IEnumerable을 통해 IList를 사용하는 대부분의 시간이 있습니다 (LINQ를 사용하는 경우 확장 메서드 로이 문제를 해결할 수는 있지만).


답변