C#.Net核心依赖注入,为构造函数注入多个参数

我有AuthenticationStrategy类,我将在控制器构造函数中注入.

我有两个IAuthenticationProviders:InternalAuthenticationProvider和ExternalAuthenticationProvider.
在AuthenticationStrategy构造函数中,我想注入所有提供者.
示例代码:

public class AuthenticationStrategy
{
    private readonly Dictionary<string, IAuthenticationProvider> _authenticationProviders;

    public AuthenticationStrategy(IAuthenticationProvider[] authenticationProviders)
    {
        if (authenticationProviders == null)
        {
            throw new ArgumentNullException("AuthenticationProviders");
        }

        _authenticationProviders = authenticationProviders
            .ToDictionary(x => nameof(x), x => x);
    }
}

如何使用依赖注入注入多个提供程序?
示例代码:

services.AddScoped<IAuthenticationProvider, InternalAuthenticationProvider>();
services.AddScoped<IAuthenticationProvider, ExternalAuthenticationProvider>();
services.AddScoped<AuthenticationStrategy>();

有任何想法吗?

最佳答案
一种选择是使AuthenticationStrategy成为通用的.然后你可以与类型不同

config.Scan(assembly =>
{
    assembly.AssemblyContainingType(typeof(AuthenticationProvider));
    assembly.ConnectImplementationsToTypesClosing(typeof(IAuthenticationProvider<>));
});

上面的代码会扫描dll,因此您也无需注册每个dll.

转载注明原文:C#.Net核心依赖注入,为构造函数注入多个参数 - 代码日志