Шаблон параметров 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; }
Другие вопросы по тегам