ホームページ > バックエンド開発 > C++ > ASP.NETコアの同じインターフェイスの複数の実装を解決する方法は?

ASP.NETコアの同じインターフェイスの複数の実装を解決する方法は?

DDD
リリース: 2025-01-29 21:11:10
オリジナル
860 人が閲覧しました

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

ASP.NETコアで複数の登録登録登録を解決する

ASP.NET Core自体は、重要な区別によって区別できるのと同じインターフェイスの実装をサポートしていません。この制限を克服するために、開発者は工場モデルなどの代替方法に依存します。ただし、これらのソリューションは依存の増加につながり、依存の反転(DIP)の原則に違反する可能性があります。 より効果的な解決策は、共有委員会を使用して、重要な値を特定の実装にマッピングすることです。以下は具体的なステップです:

委託された声明:

ServiceResolver

サービス分析のために委員会を定義します
  1. サービス登録:

    in 、各特定の実装は一時的なサービスとして登録されています:IService ServiceResolver(string key)

  2. タイプへのタイプのマッピング:

    configure特定の実装にキー値を委託します:

    Startup.cs

    <code class="language-csharp">services.AddTransient<ServiceA>();
    services.AddTransient<ServiceB>();
    services.AddTransient<ServiceC>();</code>
    ログイン後にコピー
  3. サービスの使用:
  4. 登録する必要があるクラスに注入します。たとえば、

    ServiceResolver

    <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>
    ログイン後にコピー
    この方法は、より効果的な依存関係管理を実現し、DIPを順守するために、同じインターフェイスの複数の実装を登録および分析する柔軟な方法を提供します。 ASP.NETコアの構築された関数ではありませんが、共通のDIチャレンジに実行可能なソリューションを提供します。

以上がASP.NETコアの同じインターフェイスの複数の実装を解決する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート