Maison > développement back-end > C++ > Comment résoudre plusieurs implémentations de la même interface dans ASP.NET Core?

Comment résoudre plusieurs implémentations de la même interface dans ASP.NET Core?

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

How to Resolve Multiple Implementations of the Same Interface in ASP.NET Core?

Résoudre plusieurs enregistrements enregistrés dans ASP.NET Core

ASP.NET Core lui-même ne prend pas en charge l'implémentation de la même interface qui peut être distinguée par la distinction clé. Pour surmonter cette limite, les développeurs dépendent de méthodes alternatives, telles que les modèles d'usine. Cependant, ces solutions entraîneront une dépendance accrue et pourraient violer le principe d'inversion de la dépendance (DIP).

La solution la plus efficace consiste à utiliser la Commission partagée

pour mapper la valeur clé à l'implémentation spécifique. Ce qui suit est une étape spécifique:

ServiceResolver

Déclaration confiée:
  1. Définir une commission pour l'analyse des services.

    IService ServiceResolver(string key) Enregistrement de service:

  2. Dans , chaque implémentation spécifique est enregistrée en tant que service transitoire:

    La cartographie du type au type: Startup.cs

    <code class="language-csharp">services.AddTransient<ServiceA>();
    services.AddTransient<ServiceB>();
    services.AddTransient<ServiceC>();</code>
    Copier après la connexion
    Configurer Configurez la valeur de clé à l'implémentation spécifique:
  3. Utilisation du service:

    ServiceResolver Injecter dans la classe qui doit être enregistrée. Par exemple:

    <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>
    Copier après la connexion
  4. Cette méthode fournit un moyen flexible de s'inscrire et d'analyser la mise en œuvre multiple de la même interface, afin d'atteindre une gestion plus efficace des dépendances et de respecter la DIP. Bien qu'il ne s'agisse pas de la fonction intégrée du noyau ASP.NET, il fournit une solution réalisable pour le défi DI commun.

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!

source:php.cn
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