В Caliburn.Micro документации авторы упоминают такую возможность:
ссылка на документацию
IHandle наследуется от интерфейса маркера IHandle,Это позволяет использовать приведение, чтобы определить, подписывается ли экземпляр объекта на какие-либо события.Это обеспечивает простую автоматическую подписку, если вы интегрируетесь с контейнером IoC.Большинство контейнеров IoC (включая SimpleContainer) предоставляют ловушку для вызова при создании нового экземпляра.Просто подключитесь к обратному вызову вашего контейнера, осмотрите создаваемый экземпляр, чтобы узнать, реализует ли он IHandle, и, если это так, вызовите Subscribe для агрегатора событий.
Как этого можно достичь с помощью Autofac?
Я пытался использовать возможности decorator , но, конечно, это не подходит для этого случая.Более того, по умолчанию мои разработчики IHandle <> не регистрируются как экземпляры IHandle внутри контейнера.
PS Предоставление этого неправильная реализация на всякий случай, если она может быть полезна, хотя я сомневаюсь.
builder.RegisterInstance<IEventAggregator>(new EventAggregator());
builder.RegisterDecorator<IHandle>((container, handler) =>
{
var eventAggregator = container.Resolve<IEventAggregator>();
eventAggregator.Subscribe(handler);
return handler;
}, "unsubscribed", "subscribed");