C# 自动传真:添加已激活的所有注册
我需要将C# 自动传真:添加已激活的所有注册,c#,autofac,C#,Autofac,我需要将.on激活(初始化)添加到所有注册中。下面是我现在是如何做到这一点的: builder.RegisterType<A>() .OnActivated(Initialize); builder.RegisterType<B>() .OnActivated(Initialize); builder.RegisterType<C>() .OnActivated(Initialize); void Initialize(IActi
.on激活(初始化)
添加到所有注册中。下面是我现在是如何做到这一点的:
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()
.on已激活(初始化);
builder.RegisterType()
.on已激活(初始化);
builder.RegisterType()
.on已激活(初始化);
无效初始化(IActivatedEventArgs上下文)
{
objectobj=context.Instance;
if(obj是IHasPostConstructor)
(obj作为IHasPostConstructor.PostConstructor();
}
如果我能将其简化为:
builder.RegisterType<A>();
builder.RegisterType<B>();
builder.RegisterType<C>();
builder.AllRegistrations.OnActivated(Initialize);
builder.RegisterType();
RegisterType();
RegisterType();
builder.AllRegistrations.on已激活(初始化);
类似的事情可能吗
谢谢您可以创建自己的扩展方法,如下所示:
public static IRegistrationBuilder<T, ConcreteReflectionActivatorData, SingleRegistrationStyle> RegisterWithInit<T>(this ContainerBuilder builder)
{
return builder.RegisterType<T>.OnActivated(Initialize);
}
public static IRegistrationBuilder RegisterWithInit(此ContainerBuilder生成器)
{
返回builder.RegisterType.OnActivated(初始化);
}
然后你可以这样注册:
builder.RegisterWithInit<A>();
builder.RegisterWithInit<B>();
builder.RegisterWithInit<C>();
builder.RegisterWithInit();
builder.RegisterWithInit();
builder.RegisterWithInit();