Поделиться через


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) Используйте метод on, propertyType чтобы определить, можно ли назначить объект, на который указывает ссылка, непосредственно типу свойства элемента управления, а затем, в зависимости от результата, выполнить одно из следующих действий:

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

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

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

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

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

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

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

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

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