オブジェクトが解決されるたびにトリガーされる Autofac コンテナーにグローバル コールバックを登録するにはどうすればよいですか?
リフレクションを使用して、オブジェクトにメソッドが呼び出されているかどうかを確認し、存在する場合はInitialize()それを呼び出したいと思います。ダックタイプにしたい、つまりインターフェイスは必要ありません。
ありがとう!
オブジェクトが解決されるたびにトリガーされる Autofac コンテナーにグローバル コールバックを登録するにはどうすればよいですか?
リフレクションを使用して、オブジェクトにメソッドが呼び出されているかどうかを確認し、存在する場合はInitialize()それを呼び出したいと思います。ダックタイプにしたい、つまりインターフェイスは必要ありません。
ありがとう!
Autofacでは、IComponentRegistrationインターフェイスを使用してさまざまなライフタイムイベントをサブスクライブできます。
IComponentRegistrationを作成してインスタンスを取得し、メソッドModuleをオーバーライドできます。AttachToComponentRegistration
public class EventModule : Module
{
protected override void AttachToComponentRegistration(
IComponentRegistry componentRegistry,
IComponentRegistration registration)
{
registration.Activated += OnActivated;
}
private void OnActivated(object sender, ActivatedEventArgs<object> e)
{
e.Instance.GetType().GetMethod("Initialize").Invoke(e.Instance, null);
}
}
これで、モジュールをコンテナビルダーに登録するだけで済みます。
var builder = new ContainerBuilder();
builder.RegisterModule<EventModule>();
OnActivatedまた、コンポーネントがアクティブ化されるたびに、コンポーネントを登録したモジュールに関係なく、メソッドが呼び出されます。