Configuration 如何在.Net Core中创建分层内存配置

Configuration 如何在.Net Core中创建分层内存配置,configuration,.net-core-2.1,Configuration,.net Core 2.1,我想创建一个分层的内存配置,使用嵌套字典填充IConfiguration。我目前的做法是这样的 我有一本这样的字典: var inMemConfig = new Dictionary<string, object>(); inMemConfig["section1"] = new Dictionary<string, string>(); inMemConfig["section2"] = new Dictionary<string, object>(); i

我想创建一个分层的内存配置,使用嵌套字典填充
IConfiguration
。我目前的做法是这样的

我有一本这样的字典:

var inMemConfig = new Dictionary<string, object>();
inMemConfig["section1"] = new Dictionary<string, string>();
inMemConfig["section2"] = new Dictionary<string, object>();
inMemConfig["deepNest"] = new Dictionary<string, object>();
// Excluding a cast below: 
inMemConfig["deepNest"]["list"] = new List<Dictionary<string, string>>();
inMemConfig["deepNest"]["dict"] = new Dictionary<string string>();
这显然会导致编译器错误,
inMemConfig
的类型必须为:
IEnumerable

不可能在内存中创建分层配置吗?如果是这样的话,任何指向正确方向的指针都是值得赞赏的。谢谢。

您可以使用冒号(:)作为分隔符来指示配置中的层次结构。例如:

var builder = new ConfigurationBuilder();
var configuration = builder.AddInMemoryCollection(new Dictionary<string, string> {
    ["deepNest:list"] = "some_nested_list_value",
    ["deepNest:dict"] = "some_nested_dict_value"
}).Build();
var builder=new ConfigurationBuilder();
var configuration=builder.AddInMemoryCollection(新字典{
[“deepNest:list”]=“一些嵌套的列表值”,
[“deepNest:dict”]=“一些嵌套的dict值”
}).Build();
var builder = new ConfigurationBuilder();
var configuration = builder.AddInMemoryCollection(new Dictionary<string, string> {
    ["deepNest:list"] = "some_nested_list_value",
    ["deepNest:dict"] = "some_nested_dict_value"
}).Build();