에 대한 대안 TimeSheetActivity 클래스에는 할당 모음이 있습니다. 같은 Allocation.EventDate에 대한콜렉션 조회; Dictionary
public class Allocation : ValueObject
{
public virtual StaffMember StaffMember { get; private set; }
public virtual TimeSheetActivity Activity { get; private set; }
public virtual DateTime EventDate { get ... }
public virtual TimeQuantity TimeSpent { get ... }
}
중복 할당이 허용되지 않습니다 할당은 다음과 같이 뭔가를 찾고,뿐만 아니라 도메인의 다른 개체에 의해 사용되는 값 개체입니다. 따라서 클라이언트가 액티비티에 대한 할당을 시도하면 동일한 Allocation.EventDate에 대한 콜렉션에 이미 할당이 있는지 확인합니다. 그렇지 않은 경우 새 할당이 컬렉션에 추가되지만 기존 할당이 새 할당으로 대체됩니다.
저는 현재 Allocation.EventDate를 키로 사용하여 컬렉션을 유지 관리하기 위해 사전을 사용하고 있습니다. 그것은 도메인에 대해 잘 작동하지만 키가 이미 가치의 일부라는 사실 자체가 '나쁜 냄새'가 아닌지 궁금하네요.
사전 값 외에는 아무 것도 유지할 이유가 없습니다. 왜냐하면 NHibernate를 사용하고 있기 때문에, 커스텀 타입을 작성해야 할 필요가 있을지도 모릅니다. 또한 다른 유형의 콜렉션을 사용해야한다는 단서인지 궁금합니다. (이것이 Allocation 클래스의 가상 속성에 대한 이유이기도합니다).
내가 생각하는 주요 대안은 전용 EqualityComparer를 사용하는 HashSet입니다.
당신은 어떻게 생각하십니까?
건배, Berryl
나는 이것이 아주 오래된 질문이라는 것을 알고있다. 하지만 왜 누구도 연결된 목록을 제안한 이유가 궁금합니다. 결국 이것은 사전이 충돌하는 해시를 위해 내부적으로 사용하는 것입니다. 'Dictionary'가 중복 키를 가질 수없는 유일한 이유는 키를 찾을 때 반환 할 내용을 알 수 없기 때문입니다. (Btw. 연결 형식을 구조체로 만들면 성능이 크게 향상됩니다.) –
Aidiakapi