でIHandleの実装のためのeventaggregator.Subscribe()を呼び出します。Caliburn.Micro。自動的著者はそのような可能性に言及し<strong>Caliburn.Micro</strong>ドキュメントでAutofac
IHandleはマーカーインターフェイスIHandleから継承します。これにより、オブジェクトインスタンスが任意のイベントにサブスクライブするかどうかをキャストすることができます。これにより、IoCコンテナと統合すると、簡単な自動購読が可能になります。ほとんどのIoCコンテナ(SimpleContainerを含む)は、新しいインスタンスが作成されたときに呼び出されるフックを提供します。コンテナのコールバックのために配線するだけで、IHandleが実装されているかどうかを確認するためにインスタンスが作成されているかどうか検査し、そうであれば、イベントアグリゲータでSubscribeを呼び出します。
これをAutofacでどのように実現できますか?
私はデコレータの機能を利用しようとしましたが、もちろんこの場合は不適切です。さらに、既定で私の実装者のIHandle <>は、IHandleのインスタンスとして登録されていません。
P.S.これを提供する不適切なの実装はちょっとしたことがあるかもしれませんが、私は疑いがあります。
builder.RegisterInstance<IEventAggregator>(new EventAggregator());
builder.RegisterDecorator<IHandle>((container, handler) =>
{
var eventAggregator = container.Resolve<IEventAggregator>();
eventAggregator.Subscribe(handler);
return handler;
}, "unsubscribed", "subscribed");
Doh、もう一度フィニッシュラインで殴られました! :) –
本当に私の現在のニーズを満たす。ありがとう! – Alec