Я пишу небольшое расширение для своего проекта. Вы можете попробовать это тоже
using Microsoft.Extensions.Configuration;
using System;
using System.Collections.Generic;
using System.Text;
namespace MyProject.Utilities
{
public static class ConfigurationHelper
{
public static T Load<T> (this IConfiguration configuration, string section) where T : new()
{
if (typeof(T).IsValueType)
{
return LoadStruct<T>(configuration, section);
}
return LoadClass<T>(configuration, section);
}
private static T LoadStruct<T>(IConfiguration configuration, string section)
{
return configuration.GetSection(section).Get<T>();
}
private static T LoadClass<T>(IConfiguration configuration, string section) where T: new()
{
T variable = new T();
configuration.GetSection(section).Bind(variable);
return variable;
}
}
}
Использование:
configuration.Load<List<CountryPhoneSetting>>("CountryPhoneSetting")
Редактировать: Reuired пакет - Microsoft.Extensions.Configuration.Binder
Также в зависимости от объекта в использовании appsettings должно быть так:
configuration.Load<List<Dictionary<string, CountryDetails>>>("CountryPhoneSetting")