我有一个appsettings.json文件,看起来像这样:

{
    "someSetting": {
        "subSettings": [
            "one",
            "two",
            "three"
         ]
    }
}

当我构建配置根目录并执行类似config["someSetting:subSettings"]的操作时,它将返回null,而实际的可用设置如下所示:
config["someSettings:subSettings:0"]
有没有更好的方法来检索someSettings:subSettings的内容作为列表?

最佳答案

您可以使用配置绑定(bind)程序来获得配置源的强类型表示。

这是我之前编写的测试中的一个示例,希望对您有所帮助:

    [Fact]
    public void BindList()
    {
        var input = new Dictionary<string, string>
        {
            {"StringList:0", "val0"},
            {"StringList:1", "val1"},
            {"StringList:2", "val2"},
            {"StringList:x", "valx"}
        };

        var configurationBuilder = new ConfigurationBuilder();
        configurationBuilder.AddInMemoryCollection(input);
        var config = configurationBuilder.Build();

        var list = new List<string>();
        config.GetSection("StringList").Bind(list);

        Assert.Equal(4, list.Count);

        Assert.Equal("val0", list[0]);
        Assert.Equal("val1", list[1]);
        Assert.Equal("val2", list[2]);
        Assert.Equal("valx", list[3]);
    }

重要的部分是对Bind的调用。

测试和更多示例在GitHub

10-05 19:22