Я бы посоветовал вам внедрить опции как отдельный класс, чтобы вы могли получать только связанные типы настроек и / или константы вместе.Во-первых, вы должны определить параметры в appsettings.json, как показано ниже.
{
"Config": {
"ConfigId": "value",
"ConfigName": "value",
"SomeBoolean": true,
"SomeConstant": 15,
}
}
После указания ваших вещей в файле appsettings.json вам нужно создать класс для загрузки этих значений из appsettings.json.В этом случае это выглядит как подробности Config.cs этого класса, показанные ниже.
public class Config
{
public string ConfigId { get; set; }
public string ConfigName { get; set; }
public bool SomeBoolean { get; set; }
public int SomeConstant { get; set; }
}
После создания соответствующего класса вы можете получить значения для класса, как показано ниже.Как вы могли заметить, IConfiguration является частной и получает все настройки из appsetttings.json только для инициализации приложения.А в ConfigureServices () вы должны получить значения связанных частей из этого объекта конфигурации для внедрения других сервисов.
private IConfiguration Configuration { get; }
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public void ConfigureServices(IServiceCollection services)
{
services.Configure<Config>(Configuration.GetSection("Config"));
}
После настройки вашего класса параметров (Config.cs) вы можете внедрить его как IOptions, как показано ниже.
private readonly Config _config;
public StatusService(IOptions<Config> config)
{
_config = config.Value;
}
Надеюсь, это решит вашу проблему.