Azure Конфигурация приложения для строго типизированных объектов конфигурации - PullRequest
0 голосов
/ 16 апреля 2020

Я немного поигрался с Azure Конфигурация приложения .

Вот пример конфигурации:

var environmentVariable = Environment.GetEnvironmentVariable("AppConfigurationConnectionString");
var config =
    new ConfigurationBuilder()
        .AddAzureAppConfiguration(options =>
        {
            options.Connect(environmentVariable)
                .ConfigureKeyVault(kv =>
                {
                    kv.SetCredential(new DefaultAzureCredential());
                });
        })
        .Build();

services.AddSingleton<IConfiguration>(config);

После этого я могу ввести IConfiguration экземпляр в мои службы и использовать _config["settingName"] для доступа к настройкам конфигурации. Все это работает хорошо и действительно довольно хорошо.

Одна вещь, которую я не знаю, как это сделать, - это сопоставить группы связанных параметров со строго типизированным объектом (то есть без необходимости делать все это вручную , что я мог бы сделать, но ... надеясь, что есть лучший способ).

В обычной конфигурации ядра ASP. NET я могу сгруппировать соответствующие настройки параметров следующим образом ( то есть в appsettings.json)

{
    "test": {
        "key1": "value1",
        "key2": "value2"
    }
}

с использованием шаблона IOptions следующим образом:

services.Configure<Test>(config.GetSection("test"));

, который позволяет мне внедрять строго типизированный экземпляр IOptions<Test> в мои классы. IMO, это немного лучше, чем большой плоский индексатор, где я использую _config["key1"] для получения настроек конфигурации.

Есть ли подход для Azure Конфигурирование приложения, чтобы позволить мне автоматически настраивать строго типизированные объекты конфигурации что может быть введено в мои классы?

TIA

1 Ответ

2 голосов
/ 16 апреля 2020

. NET Ядро выравнивает объекты в наборе приложений. json при импорте их в IConfiguration. Например, ваш объект test становится следующими двумя ключами в IConfiguration

_config ["test: key1"]

_config ["test: key2"]

Это означает, что вы можете выполнить sh в точности то, что вы хотите, с помощью Azure Конфигурация приложения, сохранив настройки в таком сжатом виде. Пользовательский интерфейс конфигурации приложения Azure на портале Azure имеет утилиту импорта, которая позволит вам импортировать файл appsettings. json, и он сделает это за вас.

Вот пример Используемая утилита импорта: enter image description here

enter image description here

После того, как у вас есть сплющенный объект в Azure Конфигурация приложения точный код у тебя будет работать.

...