Heim > Backend-Entwicklung > C++ > Wie kann ich Dienste in ASP.NET Core DI über die IServiceCollection hinaus auflösen?

Wie kann ich Dienste in ASP.NET Core DI über die IServiceCollection hinaus auflösen?

Linda Hamilton
Freigeben: 2025-01-17 08:51:13
Original
786 Leute haben es durchsucht

How Can I Resolve Services in ASP.NET Core DI Beyond the IServiceCollection?

ASP.NET Core Dependency Injection: Zugriff auf Dienste außerhalb von IServiceCollection

In ASP.NET Core ist IServiceCollection entscheidend für die Registrierung von Abhängigkeiten innerhalb des Dependency-Injection-Systems (DI). Es kann jedoch vorkommen, dass Sie Dienste direkt und unter Umgehung der Standardinjektion lösen müssen.

Direkter Zugriff auf Dienste über IServiceCollection

Das IServiceCollection selbst bietet keine Servicelösung; Sein Zweck besteht ausschließlich in der Konfiguration des DI-Containers. Nach der Konfiguration wird dieser Container in einen IServiceProvider.

umgewandelt

Injizieren des ServiceProviders

Zur manuellen Servicelösung fügen Sie IServiceProvider in Ihre Klasse ein. Sowohl IApplicationBuilder als auch HttpContext bieten Zugriff über ihre Eigenschaften ApplicationServices bzw. RequestServices.

Nutzung des ServiceProviders

Die IServiceProviderAngebote GetService(Type type) zum Abruf von Diensten je nach Typ. Verwenden Sie der Einfachheit halber Erweiterungsmethoden wie GetService<TService>() (erfordert using Microsoft.Extensions.DependencyInjection;).

Servicelösung innerhalb der Startup-Klasse

Abhängigkeitsinjektion im Startup

Die Startup-Klasse kann in ihren Konstruktor eingefügte Abhängigkeiten akzeptieren, z. B. IConfiguration und IWebHostEnvironment (oder IHostingEnvironment in Versionen vor 3.0).

Innerhalb von ConfigureServices() nutzen Sie diese injizierten Dienste, um weitere Abhängigkeiten zu registrieren.

Manuelle Abhängigkeitsauflösung beim Start

Um Dienste innerhalb ConfigureServices() aufzulösen, erstellen Sie ein Zwischenprodukt IServiceProvider aus dem IServiceCollection. Dies ermöglicht den Zugriff auf bis zu diesem Zeitpunkt registrierte Dienste.

Nutzung von ApplicationServices

In der Methode Configure() lösen Sie Dienste mit IApplicationBuilder.ApplicationServices auf. Dadurch wird auf für die Anwendung konfigurierte Dienste zugegriffen.

Vermeidung des Service Locator Anti-Pattern

Von einer direkten Servicelösung wird im Allgemeinen abgeraten, da sie das „Service Locator“-Anti-Pattern darstellt. Auch wenn dies manchmal notwendig ist, sollte es nach Möglichkeit zugunsten der Konstruktorinjektion vermieden werden.

Das obige ist der detaillierte Inhalt vonWie kann ich Dienste in ASP.NET Core DI über die IServiceCollection hinaus 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