Предполагая, что файл похож на config.json
{
"Section" : {
"WantedKey" : "WantedValue"
}
}
Сначала необходимо создать экземпляр конфигурации
IConfiguration config = new ConfigurationBuilder()
.AddEnvironmentVariables()
.SetBasePath(Directory.GetCurrentDirectory());
.AddJsonFile("config.json", optional: true, reloadOnChange: true);
.Build();
и зарегистрировать его в контейнере
container.RegisterInstance<IConfiguration>(config);
Для того, чтобы IConfiguration
был доступен для разрешения.
Теперь в идеале вам действительно не следует пропускать IConfiguration
для инъекции.К нему обычно обращаются в корне композиции, чтобы получить настройки для других зависимостей.Старайтесь избегать связи с зависимостями внешнего каркаса.
В этом случае вы захотите создать строгий тип для хранения желаемых настроек
public class MySetting {
public string WantedKey { get; set; }
}
и заполнить его экземпляр из конфигурации * 1021.*
MySetting setting = config.GetSection("Section").Get<MySetting>();
Вы зарегистрируете это в контейнере
container.RegisterInstance<MySetting>(setting);
и добавите его в зависимости
public class ServiceA : IServiceB {
private readonly MySetting setting;
public ServiceA(MySetting setting) {
this.setting = setting;
}
public string someVariable => setting.WantedKey;
//...
}
Ссылка Конфигурация в ASP.NET Core