Net core 2.2 hingga 3.1 baru-baru ini dan mengalami masalah dengan Autofact. Saya perlu melakukan inisialisasi setelah wadah dibuat.

Di Asp.net Core 2.2, saya memiliki kode berikut di 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);
    }

Dalam kode di atas, IMessageQueueService diwarisi dari antarmuka lain IService dan disuntikkan ke wadah dengan

builder.RegisterAssemblyTypes(GetType().Assembly)
            .As(typeof(IService))
            .AsImplementedInterfaces();

Namun, di Asp.net Core 3.1 karena Build() akan ditangani oleh Autofac sendiri, di mana saya bisa melakukan inisialisasi?

Terima kasih

0
Ben 3 Mei 2020, 09:21

1 menjawab

Jawaban Terbaik

Saya mendapatkannya. Ada panggilan balik yang bisa kita gunakan saat Autofac membangun

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

Lihat Dokumen Autofac Ini

0
Ben 3 Mei 2020, 08:49