<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チャレンジに実行可能なソリューションを提供します。