Heim > Backend-Entwicklung > C++ > Wie kann ich ASP.NET Core Services in „ConfigureServices' manuell auflösen?

Wie kann ich ASP.NET Core Services in „ConfigureServices' manuell auflösen?

Barbara Streisand
Freigeben: 2025-01-17 08:41:09
Original
999 Leute haben es durchsucht

How Can I Manually Resolve ASP.NET Core Services in `ConfigureServices`?

Lösen Sie den ASP.NET Core-Dienst manuell in ConfigureServices

auf

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage