Dodawanie usług po zbudowaniu kontenera

Czy jest możliwe zarejestrowanie usługi w czasie wykonywania, czyli po zbudowaniu ContainerBuilder i utworzeniu Container (i ContainerBuilder pozbyciu się)?

Author: Housy, 2011-02-15

2 answers

Tak możesz, używając metody Update na ContainerBuilder:

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

newBuilder.Update(existingContainer);
 91
Author: Peter Lillevold,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-12 09:38:54

Od ContainerBuilder.Aktualizacja została wycofana, nowe zalecenie jest użycie zakresu dożywotniego dziecka.

Dodawanie rejestracji do zakresu życia

Autofac pozwala na dodawanie rejestracji "w locie" podczas tworzenia dożywotnich zakresów. Może to pomóc, gdy trzeba zrobić coś w rodzaju" spoiny punktowej " ograniczonego obejścia rejestracji lub jeśli na ogół po prostu potrzebujesz dodatkowych rzeczy w zakresie, którego nie chcesz rejestrować globalnie. Robisz to mijając lambdę do BeginLifetimeScope (), która pobiera ContainerBuilder i dodaje rejestracje.

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.
}

Praca z lunetami Lifetime

 2
Author: wezzix,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-20 16:17:58