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();