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ę)?
2 answers
Tak możesz, używając metody Update
na ContainerBuilder
:
var newBuilder = new ContainerBuilder();
newBuilder.Register...;
newBuilder.Update(existingContainer);
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.
}
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