gpt4 book ai didi

asp.net-core - 如何覆盖减少数组长度的 ASP.NET Core 配置数组设置

转载 作者:行者123 更新时间:2023-12-05 05:15:20 25 4
gpt4 key购买 nike

我有一个带有 appsettings.json 配置文件的 ASP.NET Core 应用程序。文件中的一项设置由对象数组表示,如下所示:

{
"Globalization": {
"Languages": [
{
"DisplayName": "Ru",
"Code": "ru"
},
{
"DisplayName": "En",
"Code": "en"
}
]
}
}

在我们的 CI 系统中,我们使用环境变量来覆盖文件中的配置设置。事实证明,我只能覆盖现有项目或向数组添加新项目,但我不能使用索引符号(“Globalization__Languages__0__DisplayName” 等)来减少项目的数量。

appsettings.{Environment}.json 一样,即使我只有一个项目,我仍然有两种语言选项。

当然,我可以将基本配置清空或发明一些其他解决方法,但我是否遗漏了什么?有什么方法可以巧妙地覆盖减少项目数量的设置(最好借助环境变量)?

最佳答案

Microsoft community做出了一个非常糟糕的设计决定,让数组以这种方式工作(恕我直言)。

作为解决方案,我们按如下方式制定:

{
"Globalization": {
"Languages": "ru|Ru,en|En"
}
}

然后:

var langs = Configuration.GetSection("Globalization:Languages")
.Value.Split(',')
.Select(x => x.Split('|'))
.Select(x => new { Code = x[0], DisplayName = x[1] })
.ToArray();

我的建议是here .

关于asp.net-core - 如何覆盖减少数组长度的 ASP.NET Core 配置数组设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51614792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com