Ist es möglich , einen Dienst zur Laufzeit registrieren, nachdem das heißt die ContainerBuildergebaut wurde und das Containererstellt wurde (und ContainerBuilderentsorgt)?
Ist es möglich , einen Dienst zur Laufzeit registrieren, nachdem das heißt die ContainerBuildergebaut wurde und das Containererstellt wurde (und ContainerBuilderentsorgt)?
Antworten:
Ja, Sie können mit der folgenden UpdateMethode ContainerBuilder:
var newBuilder = new ContainerBuilder();
newBuilder.Register...;
newBuilder.Update(existingContainer);
Da ContainerBuilder.Update veraltet ist, wird empfohlen, den Bereich für die untergeordnete Lebensdauer zu verwenden.
Hinzufügen von Registrierungen zu einem lebenslangen Bereich
Mit Autofac können Sie Registrierungen "on the fly" hinzufügen, während Sie lebenslange Bereiche erstellen. Dies kann Ihnen helfen, wenn Sie eine Art eingeschränkte Registrierungsüberschreibung für Punktschweißungen durchführen müssen oder wenn Sie im Allgemeinen nur einige zusätzliche Dinge in einem Bereich benötigen, den Sie nicht global registrieren möchten. Dazu übergeben Sie ein Lambda an BeginLifetimeScope (), das einen ContainerBuilder verwendet und Registrierungen hinzufügt.
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.
}