Калибурн.Микро. Автоматически вызывать eventaggregator.Subscribe() для разработчиков IHandle с MEF.

В документации Caliburn.Micro авторы упоминают такую ​​возможность:

ссылка на документацию

IHandle inherits from a marker interface IHandle. This allows the use of casting to determine if an object instance subscribes to any events. This enables simple auto-subscribing if you integrate with an IoC container. Most IoC containers (including the SimpleContainer) provide a hook for being called when a new instance is created. Simply wire for your container’s callback, inspect the instance being created to see if it implement IHandle, and if it does, call Subscribe on the event aggregator.

Как можно добиться этого с помощью MEF?

Этот вопрос аналогичен Caliburn.Micro. Автоматически вызывать eventaggregator.Subscribe() для разработчиков IHandle с Autofac

Итак, как реализована функциональность, аналогичная описанному AutoSubscribeHandersModule, в MEF?


person OH Gravalid    schedule 24.10.2011    source источник


Ответы (2)


Я написал в блоге о том, как выполнить автоматическое подключение для агрегатора событий с помощью MEF в Caliburn Micro здесь; http://www.kjetilk.com/2011/10/auto-wiring-eventaggregator.html.

Короче; Вам нужно добавить MEFContrib (nuget -> Install-Package MefContrib), реализовать IExportedValueInterceptor, который подписывается на любые экземпляры IHandle, и подключить перехватчик к конвейеру создания MEF, используя InterceptionCatalog в загрузчике.

person Kjetil Klaussen    schedule 01.11.2011

Проверьте InterceptingCatalog MEFContrib. Просто поместите IHandle вместо IStartable, как описано в указанной статье.

person gius    schedule 24.10.2011