В этой статье описана разработка бизнес-класса ExpressionObject, который позволит продемонстрировать функциональность дизайнера выражений Xafari. Необходимо выполнить следующие шаги:

       ...

       [EditorAlias("ExpressionPropertyEditor")]

       [CriteriaOptions("Type")]

      string Expression { get; set; }

 

       [ImmediatePostData]

       [ValueConverter(typeof (TypeToStringConverter))]

      Type Type { get; set; }

       ...

Атрибут EditorAlias указывает, что свойство Expression в UI будет отображено с помощью ExpressionPropertyEditor. Property Editor может быть указан альтернативным способом - в Модели Приложения.

Поскольку весьма часто выражения составляются в контексте некоторого бизнес объекта, то необходима возможность привязки выражения к соответствующему типу.

Для привязки выражения к контекстному типу объявлено свойство Type, а свойство Expression помечено атрибутом [CriteriaOptions("Type")]. Свойство Type будет возвращать тип объекта, для которого строится выражение, если тип пропущен, то редактор выражений не будет отображать дерево свойств.

Вы можете найти код, использованный в этой статье, в файле ExpressionObject.cs демо-приложения Feature Center, установленного вместе с Xafari.

Замечание:

Для вычисления значения выражения необходимо использовать метод GetValue статического класса ExpressionCalculator:

ExpressionCalculator.GetValue(expression, context, parameters);