2012-07-26 28 views

回答

12

在Autofac可以使用IComponentRegistration接口訂閱各種一生的事件:

  • OnActivating
  • OnActivated
  • OnRelease

您可以通過創建一個Module得到IComponentRegistration實例並覆蓋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方法將每個組件激活沒有母校在哪個模塊已註冊的組件後調用。