Autofac:将OnActive添加到所有注册
本文关键字:注册 添加 OnActive Autofac | 更新日期: 2023-09-27 17:57:07
我需要为所有注册添加.OnActivated(Initialize)
。以下是我现在的做法:
builder.RegisterType<A>()
.OnActivated(Initialize);
builder.RegisterType<B>()
.OnActivated(Initialize);
builder.RegisterType<C>()
.OnActivated(Initialize);
void Initialize(IActivatedEventArgs<object> context)
{
object obj = context.Instance;
if (obj is IHasPostConstructor)
(obj as IHasPostConstructor).PostConstructor();
}
如果我能将其简化为以下内容,那就太好了:
builder.RegisterType<A>();
builder.RegisterType<B>();
builder.RegisterType<C>();
builder.AllRegistrations.OnActivated(Initialize);
类似的事情可能吗?
谢谢
您可以创建自己的扩展方法,如下所示:
public static IRegistrationBuilder<T, ConcreteReflectionActivatorData, SingleRegistrationStyle> RegisterWithInit<T>(this ContainerBuilder builder)
{
return builder.RegisterType<T>.OnActivated(Initialize);
}
然后你可以像这样注册:
builder.RegisterWithInit<A>();
builder.RegisterWithInit<B>();
builder.RegisterWithInit<C>();