Caliburn.Microのドキュメントでは、著者はそのような可能性について言及しています。
IHandleは、マーカーインターフェイスIHandleから継承します。これにより、キャストを使用して、オブジェクトインスタンスがイベントにサブスクライブしているかどうかを判断できます。これにより、IoCコンテナと統合する場合に、簡単な自動サブスクライブが可能になります。ほとんどのIoCコンテナ(SimpleContainerを含む)は、新しいインスタンスが作成されたときに呼び出されるためのフックを提供します。コンテナのコールバックに接続し、作成中のインスタンスを調べてIHandleが実装されているかどうかを確認し、実装されている場合は、イベントアグリゲータでSubscribeを呼び出します。
Autofacでこれをどのように達成することができますか?
デコレータの機能を利用してみましたが、もちろんこの場合はちょっと不適切です。さらに、デフォルトでは、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");