ホームページ >バックエンド開発 >C++ >ASP.NETコアの異なるキーを使用して複数のサービス実装を実装および解決する方法は?

ASP.NETコアの異なるキーを使用して複数のサービス実装を実装および解決する方法は?

DDD
DDDオリジナル
2025-01-29 21:26:10923ブラウズ

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

ASP.NET Coreに複数のサービスを実装する複数のサービス

ASP.NETコアでは、複数のサービスが同じインターフェイスに遭遇することがよくあります。この状況を効果的に処理するには、これらのサービスを登録する方法と、ランタイム中に区別識別子を使用する方法を理解する必要があります。

サービス登録

ASP.NET Coreでは、スタートアップクラスのメソッドでサービスを登録できます。通常、次のようなサービスを登録しました:

ただし、この方法は異なるサービスを区別することはできません。これにより、将来分析する能力が制限されます。 ConfigureServices

キーを使用して
<code class="language-csharp">services.AddTransient<IService, ServiceA>();
services.AddTransient<IService, ServiceB>();</code>

を分析します キーに基づいてサービスを解決するには、キーをサービスの実装にマッピングするメカニズムが必要です。これは、手数料を使用して実装できます:

この委員会を一時的なサービスとして登録し、サービスの実装にマッピングできます。

コンストラクターでの依存注射

<code class="language-csharp">public delegate IService ServiceResolver(string key);</code>
上記の方法は有効ですが、登録期間中にコンストラクターに静的データを注入することを防ぎます。この制限を克服するために、設定を注入する方法を提供する

モードを使用できます。

<code class="language-csharp">services.AddTransient<ServiceResolver>(serviceProvider => key =>
{
    switch (key)
    {
        case "A":
            return serviceProvider.GetService<ServiceA>();
        case "B":
            return serviceProvider.GetService<ServiceB>();
        default:
            throw new KeyNotFoundException();
    }
});</code>
サービスコンストラクターでこれらのオプションにアクセスできます。

結論

委員会とIOptionsモードを使用することにより、ASP.NETコアで複数のサービスを効果的に登録および分析することができ、同時に静的データにコンストラクターインジェクションを注入することもできます。この方法は、複雑な依存関係項目に柔軟で保守可能なソリューションを提供します。

以上がASP.NETコアの異なるキーを使用して複数のサービス実装を実装および解決する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。