C# строго типизированный список ConfigurationBuilder List <object> из настроек приложения

На самом деле борюсь с этим - разве это должно быть так сложно?!

У меня в настройках приложения есть простой массив объектов:

"AppSettings": {
    "Names": [
      {
        "Id": "1",
        "Name": "Mike"
      },
      {
        "Id": "2",
        "Name": "John"
      }    
    ]
}

Затем у меня класс

public class AppSettings
{
    public List<Names> Names { get; set; } = new List<Names>();
}

public class Names
{
    public string Id { get; set; }
    public string Name { get; set; }
}

Я прочитал в настройках своего приложения:

var configuration = new ConfigurationBuilder()
                            .SetBasePath(Directory.GetCurrentDirectory())
                            .AddJsonFile("appSettings.json").Build();

var config = new AppSettings();

Вот где что-то идет не так:

config.Names = configuration.GetSection("AppSettings:Names") //<<<< what do I do here?

Кажется, все это связано с IConfigurationSection что бесполезно.

1 ответ

Решение

Получите весь граф объекта из настройки, используя ConfigurationBinder.Get<T> расширение.

ConfigurationBinder.Get<T> связывает и возвращает указанный тип. ConfigurationBinder.Get<T> может быть удобнее, чем использовать ConfigurationBinder.Bind. Следующий код показывает, как использоватьConfigurationBinder.Get<T> с AppSettings класс:

//...

AppSettings config = configuration.GetSection("AppSettings").Get<AppSettings>();

//...

Эталонная конфигурация в ASP.NET Core

Другие вопросы по тегам