来自 appsettings 的 C# 强类型 ConfigurationBuilder List<object>

lev*_*s84 6 c# console-application .net-core .net-core-configuration

真的很挣扎这个 - 它应该这么难吗?

我的应用程序设置中有一个简单的对象数组:

"AppSettings": {
    "Names": [
      {
        "Id": "1",
        "Name": "Mike"
      },
      {
        "Id": "2",
        "Name": "John"
      }    
    ]
}
Run Code Online (Sandbox Code Playgroud)

然后我有课

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; }
}
Run Code Online (Sandbox Code Playgroud)

我在我的应用程序设置中读到:

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

var config = new AppSettings();
Run Code Online (Sandbox Code Playgroud)

这就是出问题的地方:

config.Names = configuration.GetSection("AppSettings:Names") //<<<< what do I do here?
Run Code Online (Sandbox Code Playgroud)

似乎这一切都与IConfigurationSection这没有帮助。

Nko*_*osi 12

使用扩展从设置中获取整个对象图ConfigurationBinder.Get<T>

ConfigurationBinder.Get<T>绑定并返回指定的类型。ConfigurationBinder.Get<T>可能比使用更方便ConfigurationBinder.Bind。以下代码显示了如何ConfigurationBinder.Get<T>与该类一起使用AppSettings

//...

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

//...
Run Code Online (Sandbox Code Playgroud)

ASP.NET Core 中的参考配置