Строго типизированные константы

Для обращения к константам в скриптах используется специальный класс, сгенерированный по всем константам в текущей ветке метаданных. Константы представлены типизированными свойствами в этом классе, поэтому в редакторе текста скрипта доступно автозаполнение для списка констант. Новые константы становятся доступны после компиляции и перезагрузки метаданных.

Класс-обертка автоматически добавляется в сгенерированную часть всех скриптов как свойство 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"]; } } 

     ...

}