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