ExpressionEditor.EvaluateExpression Metoda

Definicja

Oblicza ciąg wyrażenia i udostępnia wartość czasu projektowania właściwości kontrolki.

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

Parametry

expression
String

Ciąg wyrażenia do oceny. Wyrażenie nie zawiera prefiksu wyrażenia.

parseTimeData
Object

Obiekt zawierający dodatkowe informacje dotyczące analizowania w celu oceny expressionelementu . Zazwyczaj jest to dostarczane przez konstruktora wyrażeń.

propertyType
Type

Typ właściwości kontrolki, do której expression jest powiązana.

serviceProvider
IServiceProvider

Implementacja dostawcy usług dostarczana przez hosta projektanta, używana do uzyskiwania dodatkowych usług w czasie projektowania.

Zwraca

Obiekt przywoływane przez obliczony ciąg wyrażenia, jeśli ocena wyrażenia powiodła się; w przeciwnym razie , null.

Uwagi

Host projektanta wizualizacji używa EvaluateExpression metody do oceny wyrażenia i podania wartości czasu projektowania skojarzonej właściwości kontrolki.

Projektant wizualizacji używa ExpressionBuilder.ParseExpression metody do analizowania ciągu wyrażenia w czasie projektowania, a następnie wywołuje metodę EvaluateExpression z analizowanych danych wyrażeń. Projektant wizualizacji używa wyniku obliczonego wyrażenia do przypisywania wartości właściwości kontrolki renderowanych na powierzchni projektowej.

Uwagi dotyczące implementowania

Klasy pochodzące z ExpressionEditor klasy muszą zastąpić metodę EvaluateExpression(String, Object, Type, IServiceProvider) , aby ocenić typ wyrażenia niestandardowego w czasie projektowania.

Co najmniej implementacja EvaluateExpression(String, Object, Type, IServiceProvider) musi wykonać następujące kroki:

  1. Oceń ciąg wyrażenia i określ obiekt, do którego odwołuje się wyrażenie.

  2. Zwróć polecenie null, jeśli nie można ocenić ciągu wyrażenia.

  3. IsAssignableFrom(Type) Użyj metody , propertyType aby określić, czy obiekt, do którego odwołuje się odwołanie, można przypisać bezpośrednio do typu właściwości kontrolki, a następnie w zależności od wyniku wykonaj jedną z następujących akcji:

    • Jeśli obiekt, do której odwołuje się odwołanie, można przypisać bezpośrednio do właściwości kontrolki, zwróć obiekt przywoływanego dla wyrażenia.

    • Jeśli przywoływany obiekt jest prostym typem, takim jak ciąg, zwróć przywoływany obiekt.

    • W przeciwnym razie określ, czy przywoływanego obiektu można przypisać do lub przekonwertować na typ właściwości.

  4. CanConvertFrom Użyj metody w TypeConverter obiekcie , propertyType aby określić, czy obiekt, do którego odwołuje się odwołanie, można przekonwertować na typ właściwości kontrolki, a następnie w zależności od wyniku wykonaj jedną z następujących akcji:

    • Jeśli obiekt można przekonwertować na typ właściwości kontrolki, zwróć przekonwertowany obiekt przy użyciu ConvertFrom metody .

    • Jeśli nie można przypisać ani przekonwertować obiektu, do propertyTypektórego odwołuje się odwołanie, zwróć obiekt.

Opcjonalnie implementacja EvaluateExpression(String, Object, Type, IServiceProvider) może użyć parseTimeData obiektu dostarczonego przez implementację ParseExpression(String, Type, ExpressionBuilderContext) , aby zoptymalizować lub pomóc w ocenie ciągu wyrażenia wejściowego.

Dotyczy

Zobacz też