Если используется IOptions<T>
, тогда обновите конструктор Service
, чтобы он явно зависел от IOptions<MyOptions>
, чтобы его можно было внедрить в класс.
public class Service: IService {
public Service(IOptions<MyOptions> options) {
this.arg1 = options.Value.arg1;
this.arg2 = options.Value.arg2;
}
}
Конфигурация может быть упрощена до
services.Configure<MyOptions>(Configuration.GetSection(nameof(MyOptions)));
services.AddTransient<IService, Service>();
Предполагается, что appsettings.json содержит
{
"MyOptions": {
"arg1": value1,
"arg2": value2
}
}
Если невозможно изменить конструктор класса обслуживания, разрешите параметр в делегате фабрики объектов
services.AddTransient<IService, Service>(serviceProvider => {
var options = serviceProvider.GetService<IOptions<MyOptions>>();
return new Service(options.Value.arg1, options.Value.arg2);
});
Ссылка Шаблон настроек в ASP.NET Core