Шаблон параметров ASP.NET Core с именем, разделенным одним подчеркиванием
Я пытаюсь загрузить настройки своего приложения с помощью шаблона параметров ASP.NET Core.
В 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);
При доступе к экземпляру AppSetting в контроллере я могу получить только конфигурацию Test
как hello
. TestAbc
установлен на null
.
Кажется, что шаблон параметров не может преобразовать такую конфигурацию именования, возможно ли это добиться другими способами?
2 ответа
Единственный способ сделать это автоматически - это назвать свой объект знаком подчеркивания (Test_Abc
). Помимо этого, вы можете указать сопоставление вручную:
services.Configure<AppSettings>(o =>
{
o.TestAbc = Configuration["TEST_ABC"];
// etc.
});
Комментарий @DavidG об использовании [JsonProperty]
может работать. Я никогда не пробовал это в контексте конфигурации. Однако он будет работать, только если он вообще работает, при использовании поставщика конфигурации JSON. Если вам позже понадобится удовлетворить это, например, с помощью переменной окружения, вам не повезло. Таким образом, я бы предпочел более универсальное решение, чем это.
Начиная с .NET 6.0 Preview 7 вы можете использовать
ConfigurationKeyNameAttribute
класс.
[ConfigurationKeyName("TEST_ABC")]
public string TestAbc { get; set; }