ExpressionEditor.EvaluateExpression Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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 expression
elementu . 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:
Oceń ciąg wyrażenia i określ obiekt, do którego odwołuje się wyrażenie.
Zwróć polecenie
null
, jeśli nie można ocenić ciągu wyrażenia.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.
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
propertyType
któ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.