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

参考This Autofac Document