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