最近,我把.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中,自Asp.net Core 3.1发布以来。Build()
将由Autofac自己处理,我可以在哪里进行初始化?
谢谢您
我明白了。当Autofac构建时,我们可以使用一个回调。
builder.RegisterBuildCallback(c => {
c.Resolve<IMessageQueueService>();
});
参看 该Autofac文件