4

리프 노드 (할당)에 내 프레젠테이션 계층 뷰 모델 구조의 맨 위에 사용하려는 DurationChanged 이벤트가있는 복합 구조가 있습니다 (예 : TimeSheetViewModel), 그리고 최선의 방법은 그것에 도달하는 것이 궁금합니다. 마음에 와서도메인 이벤트 v 이벤트 수집기 v ... 기타

옵션은 다음과 같습니다

  1. 가 TimeSheetComposite에 가입하십시오. 각 컴포지트는 궁극적으로 Allocations로 구성되며, TimeSheetComposite는 TimeSheetViewModel에 대한 모델입니다. 자식 DurationChanged 이벤트가 발생하면 해고당하는 이벤트도 TimeSheetComposite에 필요합니다. TimeSheetViewModel은 후자의 이벤트에 가입 할 것이다.
  2. DurationChanged 이벤트를 무시하고 AllocationViewModel.Amount가 변경되면 TimeSheetViewModel까지 버블 링하는 INPC 체인을 따라야합니다. 유용한 정보, 특히 편집 전의 이전 금액은 없지만 필요한 경우 최종 결과를 충분히 저렴하게 계산할 수 있습니다.
  3. DurationChanged 이벤트를 Domain Event으로 만듭니다. 나는 현재 도메인 이벤트를 사용하지 않지만 개념을 좋아하고 Udi 기사에서 코드를 시작하기에 충분한 코드가있는 것 같습니다.
  4. 일종의 Event Aggregator를 설정하여 &을 게시하면 DurationChanged를 구독하십시오. 나는 도메인 이벤트와 이벤트 애그리 게이터 사이의 차이가 아직 무엇인지, 그리고 그들이 같은 것을 해결하는 무료 또는 대체 접근법인지 여부는 아직 확실하지 않다. implementation here using Rx looks promising.

이 디자인에서 TimeSheetViewModel은 Allocation.Duration이 변경된시기를 알아야 모든 날짜의 할당 기간을 새로 계산할 수 있습니다.

어떻게 DurationChanged 알림을 제공하겠습니까?

건배
Berryl

도메인 복합 구조 & 이벤트

enter image description here

표현 계층 구조

enter image description here

답변

0

난 t에서 리프 이벤트를 수신 권취 그 (TimeSheet) Composite, 그리고 본질적으로 유사한 이벤트를 다시 던져서 (TimeSheet) ViewModel이 그것을 듣기 쉽게 만듭니다.

DomainEvents/EventAggregators를 더 잘 이해하면이 항목을 다시 검토하겠습니다.

건배,
Berryl