.Net Core, доступ к настройкам без создания дополнительного класса

#.net-core

#.net-core

Вопрос:

Почему в .Net Core мы должны использовать класс для сопоставления appsettigns.json? разве это не дополнительный код, когда мне приходится добавлять свойство внутри класса настроек каждый раз, когда я добавляю ключ конфигурации? есть ли другой способ, подобный стандартному .Net?

Комментарии:

1. Если ключ настройки используется в приложении только один раз, а сам ключ никогда не меняется, то наличие класса, вероятно, не имеет особого смысла, но наличие класса обеспечит лучшую ремонтопригодность и читаемость. С помощью class будет намного проще настроить его для целей тестирования, а затем иметь зависимость от IConfiguration everywhere.

Ответ №1:

Вы всегда можете использовать интерфейс IConfiguration для чтения конфигурации следующим образом

 public class MyClass
{
    public MyClass(IConfiguration configuration)
    {
        var x = configuration["setting1"];
        var y = configuration["block1:setting1"];
        var z = configuration["block1__setting1"];
        var w = configuration.GetSection("block1")["setting1"];
    }
}
  

Но это означает, что вы введете свою конфигурацию значков во все типы, которые зависят от нее, и все эти типы будут знакомы с именами и структурой конфигурации. Если вы будете реорганизовывать свой appsetting.json, вам нужно будет найти и исправить все эти места.