Мне нужно внедрение зависимостей ASP.Net Core для передачи некоторых параметров в конструктор моего класса GlobalRepository, который реализует интерфейс ICardPaymentRepository.
Параметры предназначены для конфигурации и берутся из файла конфигурации и базы данных, и я не хочу, чтобы мой класс использовал ссылки на базу данных и саму конфигурацию.
Я думаю, что фабричный шаблон - лучший способ сделать это, но я не могу найти лучший способ использовать фабричный класс, который сам имеет зависимости от конфигурации и базы данных.
Мой стартап выглядит следующим образом:
public class Startup
{
public IConfiguration _configuration { get; }
public IHostingEnvironment _environment { get; }
public Startup(IConfiguration configuration, IHostingEnvironment environment)
{
_configuration = configuration;
_environment = environment;
}
public void ConfigureServices(IServiceCollection services)
{
services.AddScoped<IDbRepository, DbRepository>();
var connection = _configuration.GetConnectionString("DbConnection");
services.Configure<ConnectionStrings>(_configuration.GetSection("ConnectionStrings"));
services.AddDbContext<DbContext>(options => options.UseSqlServer(connection));
services.AddScoped<ICardPaymentRepository, GlobalRepository>();
...
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, IRFDbRepository rFDbRepository)
{
...
}
}
Конструктор GlobalRepository выглядит следующим образом:
public GlobalRepository(string mode, string apiKey)
{
}
Как теперь передать режим из конфигурации и apiKey из DbRepository в конструктор из автозагрузки?