Heim > Backend-Entwicklung > C++ > Wie implementieren und beheben Sie mehrere Serviceimplementierungen mit unterschiedlichen Schlüssel in ASP.NET Core?

Wie implementieren und beheben Sie mehrere Serviceimplementierungen mit unterschiedlichen Schlüssel in ASP.NET Core?

DDD
Freigeben: 2025-01-29 21:26:10
Original
952 Leute haben es durchsucht

How to Implement and Resolve Multiple Service Implementations with Different Keys in ASP.NET Core?

Mehrere Dienste zur Implementierung mehrerer Dienste in ASP.NET Core

In ASP.NET Core begegnen mehrere Dienste häufig auf dieselbe Schnittstelle. Um diese Situation effektiv zu bewältigen, müssen wir verstehen, wie diese Dienste registriert werden können und wie die Unterscheidungsbescheid verwendet werden, um sie während der Laufzeit zu beheben.

Service Registrierung

In ASP.NET Core können Sie den Dienst in der -Methode der Startklasse registrieren. Normalerweise haben wir Dienste wie folgt registriert:

ConfigureServices Diese Methode kann jedoch nicht zwischen verschiedenen Diensten unterscheiden, was unsere Fähigkeit einschränkt, sie in Zukunft zu analysieren.

services.AddTransient<IService, ServiceA>();
services.AddTransient<IService, ServiceB>();
Nach dem Login kopieren
<> Verwenden Sie den Schlüssel, um

zu analysieren

Um den Dienst basierend auf dem Schlüssel zu beheben, benötigen wir einen Mechanismus, um den Schlüssel zur Service -Implementierung abzubilden. Dies kann mit Provision implementiert werden:

Wir können diese Kommission als vorübergehender Dienst registrieren und der Service -Implementierung zuordnen:

public delegate IService ServiceResolver(string key);
Nach dem Login kopieren
<> abhängige Injektion im Konstruktor

services.AddTransient<ServiceResolver>(serviceProvider => key =>
{
    switch (key)
    {
        case "A":
            return serviceProvider.GetService<ServiceA>();
        case "B":
            return serviceProvider.GetService<ServiceB>();
        default:
            throw new KeyNotFoundException();
    }
});
Nach dem Login kopieren
Obwohl die obige Methode gültig ist, hindert es uns daran, statische Daten während des Registrierungszeitraums in den Konstruktor in die Injektion zu bringen. Um diese Grenze zu überwinden, können wir den

-Modus verwenden, der eine Methode zum Einfügen von Einstellungen bietet:

Dann können wir im Service Constructor auf diese Optionen zugreifen:

IOptions

<论> Schlussfolgerung
services.Configure<ServiceAOptions>(options =>
{
    options.ConnectionString = "connectionStringA";
});
Nach dem Login kopieren

Durch die Verwendung des Provision und des
public ServiceA(IOptions<ServiceAOptions> options)
{
    _connectionString = options.Value.ConnectionString;
}
Nach dem Login kopieren
-Modus können wir mehrere Dienste in ASP.NET Core effektiv registrieren und analysieren und gleichzeitig können wir auch Konstruktorinjektion für statische Daten injizieren. Diese Methode bietet eine flexible und wartbare Lösung für die komplexen Abhängigkeitselemente.

Das obige ist der detaillierte Inhalt vonWie implementieren und beheben Sie mehrere Serviceimplementierungen mit unterschiedlichen Schlüssel in ASP.NET Core?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage