Asp.net Core 3.1 在启动时解析 Autofac 容器并进行一些初始化
Asp.net Core 3.1 resolve Autofac container in startup and do some initialisation
net core 2.2 到 3.1 最近遇到了 Autofact 问题。构建容器后我需要做一些初始化。
在Asp.net Core 2.2中,我在Startup.cs
中有以下代码
public IServiceProvider ConfigureServices(IServiceCollection services)
{
// do some other registr
builder.Populate(services);
IContainer container = builder.Build();
// Do some initialisation
container.Resolve<IMessageQueueService>().RegisterBodiesListener();
return new AutofacServiceProvider(container);
}
在上面的代码中,IMessageQueueService
继承自另一个接口IService
并注入到容器中
builder.RegisterAssemblyTypes(GetType().Assembly)
.As(typeof(IService))
.AsImplementedInterfaces();
然而,在 Asp.net Core 3.1 中,由于 Build()
将由 Autofac 本身处理,我可以在哪里进行初始化?
谢谢
我明白了。 Autofac 构建时我们可以使用回调
builder.RegisterBuildCallback(c => {
c.Resolve<IMessageQueueService>();
});
net core 2.2 到 3.1 最近遇到了 Autofact 问题。构建容器后我需要做一些初始化。
在Asp.net Core 2.2中,我在Startup.cs
中有以下代码 public IServiceProvider ConfigureServices(IServiceCollection services)
{
// do some other registr
builder.Populate(services);
IContainer container = builder.Build();
// Do some initialisation
container.Resolve<IMessageQueueService>().RegisterBodiesListener();
return new AutofacServiceProvider(container);
}
在上面的代码中,IMessageQueueService
继承自另一个接口IService
并注入到容器中
builder.RegisterAssemblyTypes(GetType().Assembly)
.As(typeof(IService))
.AsImplementedInterfaces();
然而,在 Asp.net Core 3.1 中,由于 Build()
将由 Autofac 本身处理,我可以在哪里进行初始化?
谢谢
我明白了。 Autofac 构建时我们可以使用回调
builder.RegisterBuildCallback(c => {
c.Resolve<IMessageQueueService>();
});