Asp.net core 名称被单下划线拆分的ASP.NET核心选项模式

Asp.net core 名称被单下划线拆分的ASP.NET核心选项模式,asp.net-core,asp.net-core-configuration,Asp.net Core,Asp.net Core Configuration,我正在尝试使用ASP.NET核心选项模式加载我的应用程序设置 appsettings.json包含: { "TEst": "hello", "TEST_ABC": "2" } POCO等级: public class AppSetting { public string Test { get; set; } public string TestAbc { get; set; } } 绑定到配置: services.Configure<AppSetting&g

我正在尝试使用ASP.NET核心选项模式加载我的应用程序设置

appsettings.json
包含:

{
  "TEst": "hello",
  "TEST_ABC": "2" 
}
POCO等级:

public class AppSetting
{
    public string Test { get; set; }

    public string TestAbc { get; set; }
}
绑定到配置:

services.Configure<AppSetting>(Configuration);
services.Configure(配置);
在访问控制器中的AppSetting实例时,我只能将config
Test
设置为
hello
TestAbc
设置为
null


选项模式似乎无法转换这种命名配置,是否可以通过其他方式实现此功能?

自动完成此操作的唯一方法是使用下划线命名您的属性(
Test\u Abc
)。除此之外,您还可以手动指定映射:

services.Configure<AppSettings>(o => 
{
    o.TestAbc = Configuration["TEST_ABC"];
    // etc.
});
services.Configure(o=>
{
o、 TestAbc=配置[“TEST_ABC”];
//等等。
});

@DavidG关于使用
[JsonProperty]
的评论可能有效。我从未在配置环境中尝试过。但是,只有在使用JSON配置提供程序时,它才起作用。例如,如果您以后需要通过环境变量来满足这一要求,那么您就不走运了。因此,我会坚持使用一个更普遍适用的解决方案。

您尝试将属性更改为
Test\u Abc
TestAbc
Test\u Abc
是两个不同的名称,它们必须match@RyanWilson嗯,我尽量不做那种变通,因为在C#中为财产命名是不合适的。@Train Yes,只要寻找任何允许这种不匹配的解决方案:)您需要告诉框架如何处理下划线,例如,您可能可以使用
[JsonProperty(“TEST_ABC”)]
属性。