События домена v Агрегатор событий v ... другое - PullRequest
4 голосов
/ 30 марта 2011

У меня есть составная структура в моем домене, где конечный узел (Allocation) имеет событие DurationChanged, которое я хотел бы использовать в верхней части структуры модели представления уровня представления (в TimeSheetViewModel), и мне интересно, что лучший способ - добраться до него.

Опции, которые приходят на ум, включают:

  1. Подпишитесь на него в TimeSheetComposite. Каждый композит в конечном итоге состоит из Allocations, а TimeSheetComposite является моделью для TimeSheetViewModel. Кажется, мне также понадобится событие в TimeSheetComposite, которое запускается при возникновении дочернего события DurationChanged; TimeSheetViewModel подпишется на последнее событие.
  2. Игнорируйте событие DurationChanged и просто следуйте цепочке INPC, которая всплывает до TimeSheetViewModel, когда AllocationViewModel.Amount изменяется. У меня не было бы полезной информации, в частности, старой суммы до редактирования, но я могу при необходимости подсчитать необходимые конечные результаты достаточно дешево.
  3. Сделать событие DurationChanged Событие домена ; В настоящее время я не использую доменные события, но мне точно нравится эта концепция, и похоже, что в статье Уди достаточно кода, чтобы начать с ним работать.
  4. Настройка какого-либо агрегатора событий для публикации и подписки на DurationChanged. Я еще не совсем уверен, в чем разница между событиями домена и агрегаторами событий, и являются ли они дополнительными или альтернативными подходами к решению одной и той же задачи. Реализация здесь с использованием Rx выглядит многообещающе .

В этом проекте TimeSheetViewModel необходимо знать, когда изменилась Allocation.Duration, чтобы он мог получить новый итог всех длительностей выделения по дате.

Как бы вы предоставили уведомление DurationChanged?

Приветствия
Berryl

Домен Составная структура и событие

enter image description here

Структура слоя презентации

enter image description here

1 Ответ

0 голосов
/ 01 апреля 2011

Я завел прослушивание листового события в (TimeSheet) Composite, а затем по существу перебросил подобное событие, чтобы облегчить его (TimeSheet) ViewModel для прослушивания.

КогдаЯ лучше понимаю DomainEvents / EventAggregators, и я еще вернусь к этому.

Приветствия,
Берриль

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...