繁体   English   中英

从 appsettings.Development.json 读取值时出现问题

[英]Issue in reading a value from appsettings.Development.json

我有一个程序,我想以单个 exe 文件的形式发布,用户可以根据需要更改 appsettings 来使用它。 一些设置仅用于开发(包含在 appsettings.Development.json 中,并且此文件未发布),其中一些是生产所需的(包含在 appsettings.json 中)。 为了更好地说明,请考虑以下代码为 appsettings.Development.json

{
   "SettingA":
   { 
     "ItemA" : "some value"
   },
   "SettingB": 
   {
    "ItemB": ["1010","2020","3030"]
   }
}
  • SettingA 供开发和生产使用,用户可以更改该值

  • SettingB 仅供开发使用,用户无法更改该值

所以 appsettings.json 就像,它被发布供用户更改:

{
   "SettingA":
   { 
     "ItemA" : "some value"
   }
}

为了在生产中使用这个程序,还需要将 SettingB 设置为默认值,如下所示:

class SettingB
{
  public string[] ItemB {get; set;} = new string[]{"*"}
}

但是,问题是当我想在开发中使用它时,我希望 ItemB 被 appsettings.Development.json 中的值覆盖,而不是我得到这个:

  • 我的期望:ItemB = {"1010","2020","3030"}
  • 结果实际是:ItemB = {"*", "1010","2020","3030"}

似乎不是被替换,而是将这些值添加到默认值中。

我在这里有两个问题:

  1. 这种为诸如 SettingB 之类的属性设置默认值的方法,好吗?
  2. 如何获得 ItemB 的预期值?

顺便说一句,我使用选项来读取设置。

我在这篇文章中找到了我第二个问题的答案。 令人惊讶的是,这些数组是按设计合并的!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM