W Autofac można użyć interfejsu IComponentRegistration
zapisać się na różnych zdarzeń życiowych:
- OnActivating
- OnActivated
- onRelease
Można uzyskać instancję IComponentRegistration
tworząc Module
i przesuń metodę 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);
}
}
Teraz trzeba tylko zarejestrować swój moduł w swoim budowniczym pojemnika:
var builder = new ContainerBuilder();
builder.RegisterModule<EventModule>();
i metoda OnActivated
zostanie wywołana po każdej aktywacji składnika nie mater w którym moduł został zarejestrowany komponent.