Язык

ExpressionEditor.EvaluateExpression Метод

Определение

Вычисляет строку выражения и предоставляет значение времени разработки для свойства элемента управления.

public:
 abstract System::Object ^ EvaluateExpression(System::String ^ expression, System::Object ^ parseTimeData, Type ^ propertyType, IServiceProvider ^ serviceProvider);
public abstract object EvaluateExpression(string expression, object parseTimeData, Type propertyType, IServiceProvider serviceProvider);
abstract member EvaluateExpression : string * obj * Type * IServiceProvider -> obj
Public MustOverride Function EvaluateExpression (expression As String, parseTimeData As Object, propertyType As Type, serviceProvider As IServiceProvider) As Object

Параметры

expression
String

Строка выражения для вычисления. Выражение не включает префикс выражения.

parseTimeData
Object

Объект, содержащий дополнительные сведения о синтаксическом анализе для оценки expression. Обычно это предоставляется построителем выражений.

propertyType
Type

Тип свойства элемента управления, к которому expression привязано.

serviceProvider
IServiceProvider

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

Возвращаемое значение

Объект, на который ссылается вычисляемая строка выражения, если оценка выражения выполнена успешно; nullв противном случае .

Комментарии

Узел визуального конструктора использует EvaluateExpression метод для вычисления выражения и предоставления значения времени разработки для связанного свойства элемента управления.

Визуальный конструктор использует ExpressionBuilder.ParseExpression метод для анализа строки выражения во время разработки, а затем вызывает EvaluateExpression метод с данными проанализированного выражения. Визуальный конструктор использует результат вычисляемого выражения для назначения значений свойств элемента управления, отображаемых на поверхности конструктора.

Примечания для тех, кто реализует этот метод

Классы, производные от ExpressionEditor класса, должны переопределить EvaluateExpression(String, Object, Type, IServiceProvider) метод для вычисления типа пользовательского выражения во время разработки.

Как минимум, EvaluateExpression(String, Object, Type, IServiceProvider) реализация должна выполнять следующие действия.

  1. Оцените строку выражения и определите объект, на который ссылается выражение.

  2. Возвращается null, если не удается оценить строку выражения.

  3. IsAssignableFrom(Type) Используйте методpropertyType, чтобы определить, можно ли назначить указанный объект непосредственно типу свойства элемента управления, а затем, в зависимости от результата, выполните одно из следующих действий:

    • Если указанный объект можно назначить непосредственно свойству элемента управления, верните объект, на который ссылается выражение.

    • Если указанный объект является простым типом, например строкой, возвращает объект, на который ссылается ссылка.

    • В противном случае определите, можно ли назначить или преобразовать указанный объект в тип свойства.

  4. CanConvertFrom Используйте метод объектаTypeConverter, чтобы propertyType определить, можно ли преобразовать указанный объект в тип свойства элемента управления, а затем, в зависимости от результата, выполнить одно из следующих действий:

    • Если объект можно преобразовать в тип свойства элемента управления, верните преобразованный объект с помощью ConvertFrom метода.

    • Если указанный объект не может быть назначен или преобразован propertyTypeв, верните объект, на который ссылается ссылка.

При необходимости реализация EvaluateExpression(String, Object, Type, IServiceProvider) может использовать parseTimeData объект, предоставленный ParseExpression(String, Type, ExpressionBuilderContext) реализацией для оптимизации или справки по оценке строки входного выражения.

Применяется к

См. также раздел