2012-07-26 19 views

Respuesta

12

En Autofac puede utilizar la interfaz de IComponentRegistration a suscribir en varios eventos de toda la vida:

  • OnActivating
  • OnActivated
  • onRelease

Puede obtener la instancia IComponentRegistration mediante la creación de un Module y anula el método 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); 
    } 
} 

Ahora sólo tiene que registrar su módulo en su constructor de contenedores:

var builder = new ContainerBuilder(); 
builder.RegisterModule<EventModule>(); 

y el método OnActivated se llamará después de cada activación de componentes no mater en la que el módulo que se haya registrado el componente.

Cuestiones relacionadas