有没有办法确定Autofac何时完成了实例的初始化? 如果您有Lazy依赖项,或者通过属性注入依赖项,则可能需要它。
可能的解决方案可能如下所示:
public class Component : IKeepMeInformed {
private readonly IOtherComponent otherComponent;
public class Component(Lazy<IOtherComponent> otherComponent) {
this.otherComponent = otherComponent;
}
void IKeepMeInformed.InitializationCompleted() {
// Do whatever you need with this.otherComponent.Value
}
}
答案 0 :(得分:1)
不直接绑定到Lazy组件,但Autofac会公开允许您挂接到实例生命周期的事件。通过侦听the OnActivated event,您可以在创建实例后立即执行操作。 E.g:
builder.RegisterType<OtherComponentImplementation>().As<IOtherComponent>()
.OnActivated(e => InitializationCompleted(e.Instance));
更新:实际上,在Component
类的上下文中,您应该“知道”实例初始化的时间。只要您先访问Lazy<>.Value
属性,就会出现。