Этот вопрос основан на комментариях, связанных с этим ответом .
Подводя итог, можно сказать, как передать параметры конфигурации в веб-задание, не добавляя интерфейс IConfiguration в качестве зависимости, когдавызов ConfigureServices для установки зависимостей.
Я думал, что это будет хороший способ сделать это:
IHostBuilder builder = new HostBuilder;
...
builder.ConfigureServices((context, services) =>
{
services.AddSingleton<IMyModelClass, MyModelClass>(sp => new MyModelClass(context.Configuration));
services.AddSingleton<IMyServiceClass, MyServiceClass>(sp => new MyServiceClass(new MyModelClass()));
})
Здесь MyModelClass - это класс, который читает параметры конфигурации, например:
public class MyModelClass : IMyModelClass
{
public string MySetting { get; set; }
public MyModelClass(IConfiguration config)
{
this.MySetting = config["MySetting"];
}
}
Таким образом, он инкапсулирует эти настройки и может быть передан другим классам (например, MyServiceClass), которым требуется доступ к настройкам конфигурации.
Но, похоже, это не лучший способ.Есть еще предложения?