Heim >Backend-Entwicklung >C++ >Wie kann ich ASP.NET Core Services in „ConfigureServices' manuell auflösen?
Lösen Sie den ASP.NET Core-Dienst manuell in ConfigureServices
Die Methode ConfigureServices
, die zum Konfigurieren des Abhängigkeitsinjektionscontainers in ASP.NET Core verwendet wird, bietet keine direkte Methode zum Auflösen von Diensten. Um Dienste mit dieser Methode manuell aufzulösen, ist ein alternativer Ansatz erforderlich.
Dienstanbietermuster
Um Dienste aufzulösen, verwendet ASP.NET Core das Dienstanbietermuster. Sobald die Dienstsammlung erstellt ist, wird sie in eine IServiceProvider
-Instanz umgewandelt, sodass die Dienste aufgelöst werden können.
Injektionsdienstleister
Eine Möglichkeit, einen-Dienst aufzulösen, besteht darin, eine IServiceProvider
-Instanz in den Konstruktor der Startup
-Klasse einzufügen. Diese Methode bietet jedoch nur Zugriff auf begrenzte, notwendige Dienste, die von der Hosting-Ebene injiziert werden.
ApplicationServices verwenden
In der Methode Configure
stellt IApplicationBuilder
das Attribut ApplicationServices
bereit, das einen Dienstanbieter mit Zugriff auf alle registrierten Dienste enthält.
<code class="language-csharp">public void Configure(IApplicationBuilder app) { var serviceProvider = app.ApplicationServices; var fooService = serviceProvider.GetService<IFooService>(); }</code>
Bauen Sie einen Zwischendienstleister auf
Um Dienste in der ConfigureServices
-Methode aufzulösen, kann ein Zwischendienstanbieter aus einer teilweise erstellten Sammlung von Diensten erstellt werden. Dies umfasst jedoch nur Dienste, die vor diesem Zeitpunkt registriert wurden.
<code class="language-csharp">public void ConfigureServices(IServiceCollection services) { services.AddSingleton<IFooService, FooService>(); var sp = services.BuildServiceProvider(); var fooService = sp.GetService<IFooService>(); }</code>
Manuelles Parsen vermeiden
Das manuelle Auflösen von Diensten wird im Allgemeinen nicht empfohlen, da es gegen die Prinzipien der Abhängigkeitsinjektion verstößt. Verwenden Sie stattdessen die Injektion oder nutzen Sie die Injektion eines Dienstanbieters in der Configure
-Methode.
Das obige ist der detaillierte Inhalt vonWie kann ich ASP.NET Core Services in „ConfigureServices' manuell auflösen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!