Maison > développement back-end > C++ > Comment implémenter et résoudre plusieurs implémentations de services avec différentes clés dans ASP.NET Core?

Comment implémenter et résoudre plusieurs implémentations de services avec différentes clés dans ASP.NET Core?

DDD
Libérer: 2025-01-29 21:26:10
original
977 Les gens l'ont consulté

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

Plusieurs services pour implémenter plusieurs services dans ASP.NET Core

Dans ASP.NET Core, plusieurs services rencontrent souvent la même interface. Afin de gérer efficacement cette situation, nous devons comprendre comment enregistrer ces services et comment utiliser l'identifiant de distinction pour les résoudre pendant l'exécution.

Enregistrement des services

Dans ASP.NET Core, vous pouvez enregistrer le service dans la méthode de la classe de démarrage. Habituellement, nous avons enregistré des services comme celui-ci:

ConfigureServices Cependant, cette méthode ne peut pas distinguer les différents services, ce qui limite notre capacité à les analyser à l'avenir.

services.AddTransient<IService, ServiceA>();
services.AddTransient<IService, ServiceB>();
Copier après la connexion
<> Utilisez la clé pour analyser

Pour résoudre le service en fonction de la clé, nous avons besoin d'un mécanisme pour cartographier la clé de l'implémentation du service. Cela peut être mis en œuvre à l'aide de la Commission:

Nous pouvons enregistrer cette commission en tant que service transitoire et le cartographier à la mise en œuvre du service:

public delegate IService ServiceResolver(string key);
Copier après la connexion
<> Injection dépendante dans le constructeur

services.AddTransient<ServiceResolver>(serviceProvider => key =>
{
    switch (key)
    {
        case "A":
            return serviceProvider.GetService<ServiceA>();
        case "B":
            return serviceProvider.GetService<ServiceB>();
        default:
            throw new KeyNotFoundException();
    }
});
Copier après la connexion
Bien que la méthode ci-dessus soit valide, elle nous empêche d'injection de données statiques dans le constructeur pendant la période d'inscription. Afin de surmonter cette limite, nous pouvons utiliser le mode

, qui fournit une méthode d'injection de paramètres:

Ensuite, nous pouvons accéder à ces options dans le constructeur de services:

IOptions

<论> Conclusion
services.Configure<ServiceAOptions>(options =>
{
    options.ConnectionString = "connectionStringA";
});
Copier après la connexion

En utilisant le mode Commission et
public ServiceA(IOptions<ServiceAOptions> options)
{
    _connectionString = options.Value.ConnectionString;
}
Copier après la connexion
, nous pouvons enregistrer et analyser efficacement plusieurs services dans ASP.NET Core, et en même temps, nous pouvons également injecter l'injection de constructeur pour des données statiques. Cette méthode fournit une solution flexible et maintenable pour les éléments de dépendance complexes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal