события прошли цепочку объектов в c # и silverlight - PullRequest
2 голосов
/ 13 января 2012

У меня есть набор взаимодействующих объектов, и я хотел бы сохранить эту структуру нетронутой из-за разделения интересов, принципа единой ответственности и способности к тестированию.

Задача, с которой я сталкиваюсь, заключается в том, как добиться наилучших результатов.обрабатывать асинхронные события вверх по цепочке.

Вот мой сценарий:

Ссылка на ObjectA Ссылки на ObjectB Ссылки на ObjectC ObjectD.

ObjectA вызывает ObjectB и, таким образом, в конечном итоге приводит кв ObjectD выполняется асинхронный вызов внешней системы.

Вопрос: я ищу рекомендуемые рекомендации, как заставить ObjectA делать неблокирующий вызов, а затем получать уведомление о завершении асинхронного завершения из ObjectD.

У меня это работает с передачей и связыванием обработчиков событий по уровням, но это кажется слишком сложным, и я беспокоюсь о производительности.

Есть предложения о том, как лучше справиться с этим?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 13 января 2012

Вы можете взглянуть на функциональность Messenger в MVVM Light Toolkit .Это в основном агрегатор событий, подобный тому, который предложил Caleb Vear.Основной целью MVVM Light является упрощение шаблона MVVM, но вы можете использовать функцию Messenger самостоятельно, если это все, что вам нужно.

0 голосов
/ 13 января 2012

Похоже, вы могли бы извлечь выгоду из чего-то вроде EventAggregator.Net . Это позволяет подписываться на события разных типов, не беспокоясь о том, кто публикует событие. Другими словами, ObjectA подписывается на событие OperationCompleted, которое публикуется ObjectD, но ObjectA никогда не имело ссылки на ObjectD и не знало, что оно существует.

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