gpt4 book ai didi

c# - Autofac:将 OnActivated 添加到所有注册

转载 作者:太空狗 更新时间:2023-10-29 23:10:38 28 4
gpt4 key购买 nike

我需要将 .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>();

关于c# - Autofac:将 OnActivated 添加到所有注册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6048812/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com