2017-03-23 2 views
1

Ich bin auf ein Problem innerhalb meiner ConfigureServices-Methode von Startup.cs, wo ich GET (serviceProvider.GetService <>) einen Dienst, den ich gebunden haben, führen Sie eine Methode (CreateEndpoint) von der gebundener Dienst, ein Objekt zurückgeben und dann dieses Objekt als Singleton binden.Bind-Service nach ConfigureServices abgeschlossen

Es scheint, wenn ich services.BuildServiceProvider() zweimal innerhalb von ConfigureServices ausführen, scheint die App nur den Dienstanbieter aus dem ersten Aufruf zu verwenden, so dass der zweite Aufruf nicht mein begrenztes Singleton-Objekt enthalten.

Alternativ gibt es eine Möglichkeit für mich, einen Dienst zu binden, nachdem ConfigureServices abgeschlossen wurde? So wie ich es derzeit eingerichtet habe, wird die Methode CreateEndpoint in der Configure-Methode von Startup ausgelöst. Das einzige Problem dabei ist, dass ich das Singleton-Objekt nicht außerhalb der ConfigureServices-Methode binden kann.

+0

Zeigen Sie ein [mcve], das verwendet werden kann, um das Problem und das gewünschte Verhalten zu reproduzieren. – Nkosi

+1

@NKosi Ich stimme nicht zu, dass diese Frage off-topic ist. Das gewünschte Verhalten ist sehr klar. Es ist beantwortbar und hat eine sehr spezifische Antwort. –

Antwort

1

Sie etwas wie folgt aus:

services.AddTransient<EndpointFactory>(); 
services.AddTransient(container => container.GetService<EndpointFactory>().CreateEndpoint()); 

Sie haben eine Funktion, um Ihre Registrierung Aufruf übergeben, wenn Sie zum ersten Mal einen anderen Dienst lösen müssen.

Verwandte Themen