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