IMO, использующий класс, полный констант, подходит для констант. Если они будут время от времени меняться, я рекомендую вместо этого использовать AppSettings в вашей конфигурации и класс ConfigurationManager.
Когда у меня есть «константы», которые фактически извлекаются из AppSettings или подобного, у меня всегда будет класс «констант», который завершает чтение из диспетчера конфигурации. Всегда более значимо иметь Constants.SomeModule.Setting
вместо того, чтобы обращаться напрямую в ConfigurationManager.AppSettings["SomeModule/Setting"]
любое место, которое хочет использовать указанное значение настройки.
Бонусные баллы за эту настройку, поскольку SomeModule
, скорее всего, это будет вложенный класс внутри файла констант, вы можете легко использовать инъекцию зависимостей для инъекции SomeModule
напрямую в классы, которые от нее зависят. Вы также можете даже извлечь интерфейс поверх, SomeModule
а затем создать зависимость от него ISomeModuleConfiguration
в вашем потребляющем коде, тогда это позволит вам отделить зависимость от файлов констант и даже потенциально упростить тестирование, особенно если эти настройки поступают из AppSettings и вы меняете их с помощью преобразований конфигурации, потому что настройки зависят от среды.