Pertanyaan Menambahkan layanan setelah penampung telah dibangun


Apakah mungkin untuk mendaftarkan layanan pada saat run-time, yang berarti setelah ContainerBuilder telah dibangun dan Container telah dibuat (dan ContainerBuilder dibuang)?


75
2018-02-15 00:29


asal


Jawaban:


Ya, Anda bisa, menggunakan Update metode aktif ContainerBuilder:

var newBuilder = new ContainerBuilder();
newBuilder.Register...;

newBuilder.Update(existingContainer);

91
2018-02-15 20:47



Karena ContainerBuilder.Update telah dihentikan, rekomendasi baru adalah menggunakan cakupan masa hidup anak.

Menambahkan Pendaftaran ke Cakupan Seumur Hidup

Autofac memungkinkan Anda menambahkan registrasi “on the fly” saat Anda membuat cakupan seumur hidup. Ini dapat membantu Anda ketika Anda perlu melakukan semacam pengalihan pendaftaran terbatas "lasan titik" atau jika Anda pada umumnya hanya memerlukan beberapa hal tambahan dalam cakupan yang tidak ingin Anda daftarkan secara global. Anda melakukan ini dengan meneruskan lambda ke BeginLifetimeScope () yang mengambil ContainerBuilder dan menambahkan registrasi.

using(var scope = container.BeginLifetimeScope(
  builder =>
  {
    builder.RegisterType<Override>().As<IService>();
    builder.RegisterModule<MyModule>();
  }))
{
  // The additional registrations will be available
  // only in this lifetime scope.
}

Bekerja dengan Scope Seumur Hidup


1
2018-03-20 16:17