У меня есть приложение, состоящее из следующих трех модулей:
(Каждый объект - это фигура, которую я могу редактировать в художнике).
Когда я открываю объект в рисовальщике, он добавляется к объектам, которые уже есть в рисовальщике, и я могу перемещать его и изменять.
Я использую объект, похожий на EventAggregator, для связи между модулями. Например, чтобы показать результаты поиска, я публикую событие «ShowList», которое перехватывается модулем List (я не уверен, что это лучший способ сделать это, если у кого-то есть идея получше, прокомментируйте ...).
Одна из функций модуля поиска требует, чтобы он получил выбранный объект в рисовальщике (если рисовальщик доступен), и я не уверен, что было бы лучшим способом сделать это ...
Я подумал об этих решениях:
Каждый раз, когда выбранный объект в рисовальщике изменяется, он публикует событие «PainterSelectedObjectChanged», которое будет перехвачено модулем поиска и сохранено для дальнейшего использования.
Когда выбранный объект понадобится модулю поиска, он опубликует событие «RequestingPainterSelectedObject», которое будет перехвачено модулем рисования. Затем модуль рисования установит свойство «SelectedObject» в объекте EventArgs, и когда публикация будет завершена и мы вернемся в модуль поиска, у нас будет выбранный объект рисовальщика в объекте EventArgs.
Как вы думаете? как правильно это сделать?





Я бы сказал, вариант А. Это похоже на сценарий обычный, возможно, я не совсем понял его в целом. :)
Я бы сказал, вариант Б. Это звучит как довольно обычный сценарий, возможно, я не совсем понял его в целом. :)