Heim > Backend-Entwicklung > C++ > Wie registriere ich mehrere Schnittstellenimplementierungen in ASP.NET Core?

Wie registriere ich mehrere Schnittstellenimplementierungen in ASP.NET Core?

Susan Sarandon
Freigeben: 2025-01-29 21:21:12
Original
398 Leute haben es durchsucht

How to Register and Resolve Multiple Interface Implementations in ASP.NET Core?

Mehrere Schnittstellen im ASP.NET -Kern registrieren, um

zu erreichen In ASP.NET CORE wird aufgrund des Mangels an expliziter Schlüsselregungsregistrierung mehrere Dienste zur Erreichung derselben Schnittstelle Herausforderungen mit sich bringen. Das Folgende ist eine umfassende Lösung, die verwendet wird, um dieses Problem zu lösen und die Mängel des Fabrikmodells zu vermeiden:

Register zur Implementierung einer spezifischen Implementierung

Mehrfachimplementierung der Registrierungsschnittstelle verwenden Sie die -Methode mehrmals und verwenden Sie verschiedene Typen:

AddTransient Benutzerdefinierter Service Parser

<code class="language-csharp">services.AddTransient<ServiceA>();
services.AddTransient<ServiceB>();
services.AddTransient<ServiceC>();</code>
Nach dem Login kopieren

Erstellen Sie eine benutzerdefinierte Kommission namens , sie empfängt einen String -Schlüssel und gibt das entsprechende Dienstbeispiel zurück:

in der Methode registrieren Sie einen benutzerdefinierten Parser: ServiceResolver

<code class="language-csharp">public delegate IService ServiceResolver(string key);</code>
Nach dem Login kopieren
im Benutzer zum Injektion

ConfigureServices

Inject in Benutzer injizieren, erlauben Sie ihnen, bestimmte Dienste zu analysieren:
<code class="language-csharp">services.AddTransient<ServiceResolver>(serviceProvider => key =>
{
    switch (key)
    {
        case "A":
            return serviceProvider.GetService<ServiceA>();
        case "B":
            return serviceProvider.GetService<ServiceB>();
        case "C":
            return serviceProvider.GetService<ServiceC>();
        default:
            throw new KeyNotFoundException();
    }
});</code>
Nach dem Login kopieren

Injizieren Sie den Konstruktor mit statischen Daten, um

zu injizieren

Um die statischen Daten während der Registrierungsperiode in den Konstruktor einzubringen ServiceResolver

Registrieren Sie die Fabrik als Einzelfall, um sicherzustellen, dass es im gesamten Lebenszyklus der Anwendung verfügbar ist:
<code class="language-csharp">public class Consumer
{
    private readonly IService _aService;

    public Consumer(ServiceResolver serviceAccessor)
    {
        _aService = serviceAccessor("A");
    }

    public void UseServiceA()
    {
        _aService.DoTheThing();
    }
}</code>
Nach dem Login kopieren

In der Methode ist der Diensttyp an die Werksmethode gebunden:

Mit dieser Methode können Sie die mehrfache Implementierung der Schnittstelle nahtlos registrieren und beheben, statische Daten in den Konstruktor injizieren, die Mängel des Fabrikmodus vermeiden und das Prinzip der Abhängigkeitsinjektion im ASP.NET -Kern einhalten.

Das obige ist der detaillierte Inhalt vonWie registriere ich mehrere Schnittstellenimplementierungen in ASP.NET Core?. 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