【问题标题】:Asp.net Core 3.1 resolve Autofac container in startup and do some initialisationAsp.net Core 3.1 在启动时解析 Autofac 容器并进行一些初始化
【发布时间】:2020-05-03 06:21:58
【问题描述】:

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

谢谢

【问题讨论】:

    标签: asp.net-core autofac


    【解决方案1】:

    我明白了。我们可以在 Autofac 构建时使用回调

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

    参考This Autofac Document

    【讨论】:

    • 如果您只需要解析组件,这就是“自动激活”的用途。它在您链接的同一个文档中。
    猜你喜欢
    • 2017-06-28
    • 2016-11-16
    • 1970-01-01
    • 1970-01-01
    • 2020-07-28
    • 1970-01-01
    • 2015-11-14
    • 2020-09-23
    • 2020-05-20
    相关资源
    最近更新 更多