Heim > Backend-Entwicklung > C++ > Wie kann ich ASP.NET Core DI-Instanzen in ConfigureServices auflösen?

Wie kann ich ASP.NET Core DI-Instanzen in ConfigureServices auflösen?

Susan Sarandon
Freigeben: 2025-01-17 08:37:07
Original
220 Leute haben es durchsucht

How Can I Resolve ASP.NET Core DI Instances within ConfigureServices?

In ASP.NET Core MVC wird der Abhängigkeitsinjektionsmechanismus (DI) verwendet, um die Erstellung und den Lebenszyklus von Anwendungsabhängigkeiten zu verwalten. Die ConfigureServices-Methode wird normalerweise zum Registrieren von Abhängigkeiten verwendet, erstellt jedoch zunächst nur eine IServiceCollection-Sammlung, die als Blaupause für den DI-Container fungiert.

Um die Dienstinstanz manuell aufzulösen, müssen wir ein IServiceProvider erhalten, das den vollständig zusammengesetzten Container enthält. Es gibt mehrere Möglichkeiten, dies zu erreichen:

Abhängigkeitsinjektion über Konstruktor

Das Einfügen von Diensten in den Konstruktor der Startup-Klasse ermöglicht den direkten Zugriff auf integrierte Dienste in ConfigureServices-Methoden, z. B. IConfiguration

<code class="language-csharp">public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    public void ConfigureServices(IServiceCollection services)
    {
        // 在此处使用 Configuration
    }
}</code>
Nach dem Login kopieren
Abhängigkeiten manuell in der Konfigurationsmethode auflösen

In der Methode

bietet Configure direkten Zugriff auf IApplicationBuilder: IServiceProvider

<code class="language-csharp">public void Configure(IApplicationBuilder app)
{
    var serviceProvider = app.ApplicationServices;
    var hostingEnv = serviceProvider.GetService<IWebHostEnvironment>();
}</code>
Nach dem Login kopieren
Abhängigkeiten in „ConfigureServices“ auflösen

Um Abhängigkeiten direkt in

aufzulösen, müssen Sie einen Zwischendienstanbieter verwenden: ConfigureServices

<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
Notizen

Eine manuelle Auflösung von Abhängigkeiten (Service Locators) wird im Allgemeinen nicht empfohlen, da sie die Wartbarkeit und Testbarkeit beeinträchtigen kann. Fügen Sie nach Möglichkeit lieber Abhängigkeiten ein.

Das obige ist der detaillierte Inhalt vonWie kann ich ASP.NET Core DI-Instanzen in ConfigureServices 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