ExpressionEditor.EvaluateExpression Metoda

Definice

Vyhodnotí řetězec výrazu a poskytne hodnotu času návrhu pro vlastnost ovládacího prvku.

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

Řetězec výrazu, který se má vyhodnotit. Výraz neobsahuje předponu výrazu.

parseTimeData
Object

Objekt obsahující další informace analýzy pro vyhodnocení expression. To obvykle poskytuje tvůrce výrazů.

propertyType
Type

Typ vlastnosti ovládacího prvku, ke které expression je vázán.

serviceProvider
IServiceProvider

Implementace poskytovatele služeb dodávaná hostitelem návrháře, která slouží k získání dalších služeb v době návrhu.

Návraty

Objekt odkazovaný řetězcem vyhodnoceného výrazu, pokud bylo vyhodnocení výrazu úspěšné; v opačném případě . null

Poznámky

Hostitel vizuálního návrháře používá metodu EvaluateExpression k vyhodnocení výrazu a poskytnutí hodnoty návrhu pro přidruženou vlastnost ovládacího prvku.

Vizuální návrhář používá metodu ExpressionBuilder.ParseExpression k analýze řetězce výrazu v době návrhu a potom volá metodu EvaluateExpression s analyzovanými daty výrazů. Vizuální návrhář používá výsledek vyhodnoceného výrazu k přiřazení hodnot vlastností ovládacího prvku vykreslených na návrhové ploše.

Poznámky pro implementátory

Třídy odvozené z ExpressionEditor třídy musí přepsat metodu EvaluateExpression(String, Object, Type, IServiceProvider) k vyhodnocení typu vlastního výrazu v době návrhu.

Implementace musí minimálně EvaluateExpression(String, Object, Type, IServiceProvider) použít následující kroky:

  1. Vyhodnoťte řetězec výrazu a určete objekt, na který odkazuje výraz.

  2. Vrátí hodnotu null, pokud řetězec výrazu nelze vyhodnotit.

  3. Metodu IsAssignableFrom(Type) použijte propertyType k určení, zda odkazovaný objekt lze přiřadit přímo k typu vlastnosti ovládacího prvku, a pak v závislosti na výsledku proveďte jednu z následujících akcí:

    • Pokud odkazovaný objekt lze přiřadit přímo k vlastnosti ovládacího prvku, vraťte odkazovaný objekt pro výraz.

    • Pokud je odkazovaný objekt jednoduchým typem, například řetězec, vrátí odkazovaný objekt.

    • V opačném případě určete, zda lze odkazovaný objekt přiřadit nebo převést na typ vlastnosti.

  4. CanConvertFrom Pomocí metody u objektu TypeConverterpropertyType určete, zda odkazovaný objekt lze převést na typ vlastnosti ovládacího prvku, a poté v závislosti na výsledku proveďte jednu z následujících akcí:

    • Pokud lze objekt převést na typ vlastnosti ovládacího prvku, vraťte převedený objekt pomocí ConvertFrom metody.

    • Pokud odkazovaný objekt nelze přiřadit nebo převést na propertyType, vraťte odkazovaný objekt.

Volitelně EvaluateExpression(String, Object, Type, IServiceProvider) může implementace použít parseTimeData objekt, který je dodán implementací ParseExpression(String, Type, ExpressionBuilderContext) k optimalizaci nebo pomoci při vyhodnocení vstupního řetězce výrazu.

Platí pro

Viz také