Для обращения к константам в скриптах используется специальный класс, сгенерированный по всем константам в текущей ветке метаданных. Константы представлены типизированными свойствами в этом классе, поэтому в редакторе текста скрипта доступно автозаполнение для списка констант. Новые константы становятся доступны после компиляции и перезагрузки метаданных.
Класс-обертка автоматически добавляется в сгенерированную часть всех скриптов как свойство Constants. Использовать IConstantManager в скриптах не рекомендуется, поскольку в этом случае теряется проверка имени и типа константы компилятором.
Примеры использования констант в скрипте:
// правильно var prefix = Constants.ArticleBarcodePrefix;
// правильно var userList = Constants.WebServiceUsers;
// неправильно! var maxReserveAmount = (decimal)ConstantManager["MaxReserveAmount"]; |
Как выглядит класс-обертка
Строго типизированная обертка для констант выглядит как класс со свойствами, имена и типы которых дублируют имена и типы констант. Значения констант не зашиваются в тело класса, а запрашиваются динамически у службы IConstantManager. При добавлении новой константы, переименовании или смене типа требуется перекомпиляция метаданных, при изменении значения — не требуется.
Генерируемый класс выглядит примерно так:
public class RootConstantGroup { private IConstantManager ConstantManager { get; set; }
public long DefaultFirmID { get { return (long)ConstantManager["DefaultFirmID"]; } }
public decimal MaxReserve { get { return (decimal)ConstantManager["MaxReserve"]; } } ... } |