Asp.net Core 3.1在启动时解析Autofac容器并做一些初始化工作。

问题描述 投票:0回答:1

最近,我把.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自己处理,我可以在哪里进行初始化?

谢谢您

asp.net-core autofac
1个回答
0
投票

我明白了。当Autofac构建时,我们可以使用一个回调。

builder.RegisterBuildCallback(c => {
            c.Resolve<IMessageQueueService>();
            });

参看 该Autofac文件

© www.soinside.com 2019 - 2024. All rights reserved.