Задать вопрос
Viji
@Viji
DevOps Engineer

Как можно получать или ссылаться на переменные с двойным подчеркиванием при помощи sub classov?

получаю все env variables c помощью

private static IConfiguration ProjectBuildConfiguration() => new ConfigurationBuilder().AddEnvironmentVariables()


в числе них есть две
  • ApiConfig__DeleteQueue
  • ApiConfig__SendQueue


насколько я понимаю можно обращаться к ним через общий класс ApiConfig , и два дочерних класса, причем разделение будет __ двойное нижнее подчеркивание, но как это реализовать?
  • Вопрос задан
  • 38 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
igolets
@igolets
Программист C#, MSSQL
Вот статья по теме: https://learn.microsoft.com/en-us/aspnet/core/fund... Раздел "Environment variables".
Там есть пример, ссылка на код (на GitHub) и вызов
set MyKey="My key from Environment"
set Position__Title=Environment_Editor
set Position__Name=Environment_Rick
dotnet run


Собственно, под капотом следующее (тут сборная солянка, из разных классов):
// из public class Startup
        public void ConfigureServices(IServiceCollection services)
        {
            services. Configure<PositionOptions>(Configuration.GetSection(
                                                PositionOptions.Position));
            services.AddRazorPages();
        }

// из кода, который обращается к настройкам
    public class PositionOptions
    {
        public const string Position = "Position";

        public string Title { get; set; }
        public string Name { get; set; }
    }

        public Test2Model(IOptions<PositionOptions> options)
        {
            _options = options.Value;
        }

        public ContentResult OnGet()
        {
            return Content($"Title: {_options.Title} \n" +
                           $"Name: {_options. Name}");
        }

Т.е. в Вашем случае нужно:
  1. сделать класс ApiConfig (по образцу PositionOptions из примера выше)
  2. в Startup вызвать services. Configure, передав данные класса ApiConfig
  3. в коде, который дожен работать с ApiConfig запросить в конструкторе IOptions<ApiConfig>


Второй вариант доступа такой:
var title = Configuration["Position:Title"];
            var name = Configuration["Position:Name"];
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы