Asp. net Core 3.1 разрешает контейнер Autofa c при запуске и выполняет некоторую инициализацию - PullRequest
0 голосов
/ 03 мая 2020

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() будет обрабатываться Autofa c сама, где я могу сделать инициализацию?

Спасибо

1 Ответ

0 голосов
/ 03 мая 2020

Я понял. Существует обратный вызов, который мы можем использовать, когда Autofa c строит

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

См. Этот Autofa c Документ

...