我有一个
appsettings.json
文件,其中包含一个字符串列表:[“foo”,“bar”]。我当前的代码如下:
appsettings.json
文件:
{
"MyVariable": ["test"],
}
Program.cs
文件:
var configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json")
.AddEnvironmentVariables()
.Build();
如果我运行以下代码而不注入任何环境变量,它就会起作用。
var result = config.GetSection("MyVariable").Get<List<string>>(); // returns a list with one element "test"
如果我添加以下环境变量并再次运行,我仍然得到相同的结果:一个包含一个元素“test”的列表。
MyVariable=["foo", "bar"]
奇怪的是:如果我运行
config.GetSection("MyVariable").Get<string>()
它会返回以下字符串:MyVariable=[\"foo\", \"bar\"]
。
如何将
MyVariable
定义为列表,以便我仍然可以通过以下方式检索它:config.GetSection("MyVariable").Get<List<string>>()
您需要为每个项目使用一个环境变量,并且名称应包含索引,如下所示:
MyVariable__0="foo"
MyVariable__1="bar"
双下划线被解释为节分隔符。