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

swd*_*don 7 configuration .net-core-2.1

我想按照使用嵌套字典来填充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>();
Run Code Online (Sandbox Code Playgroud)

填充上面的字典后,我尝试使用ConfigurationBuilder如下所示。

var builder = new ConfigurationBuilder();
var configuration = builder.AddInMemoryCollection(inMemConfig).Build(); 
Run Code Online (Sandbox Code Playgroud)

这显然会给编译器错误,该错误inMemConfig需要为以下类型:IEnumerable<KeyValuePair<string, string>>

是否不可能创建分层内存配置,如果是的话,非常感谢任何正确方向的指针。谢谢。

AlR*_*lRi 10

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

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