Sdílet prostřednictvím


ExpressionEditor.EvaluateExpression Metoda

Definice

Vyhodnotí řetězec výrazu a poskytuje 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ší parsující informace pro vyhodnocení expression. To obvykle poskytuje tvůrce výrazů.

propertyType
Type

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

serviceProvider
IServiceProvider

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

Návraty

Object

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 času návrhu přidružené vlastnosti 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 pak volá EvaluateExpression metodu s analyzovanými daty výrazu. Návrhář vizuálu používá výsledek vyhodnoceného výrazu k přiřazení hodnot vlastností ovládacího prvku, které se vykreslují 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í nullhodnotu , pokud řetězec výrazu nelze vyhodnotit.

  3. Použijte metodu IsAssignableFrom(Type) k propertyType určení, zda lze odkazovaný objekt 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 lze odkazovaný objekt přiřadit přímo k vlastnosti ovládacího prvku, vrátí odkazovaný objekt pro výraz.

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

  • Jinak určete, zda lze odkazovaný objekt přiřadit nebo převést na typ vlastnosti.

  1. Použijte metodu CanConvertFrom objektu TypeConverter k propertyType určení, zda lze odkazovaný objekt převést na typ vlastnosti ovládacího prvku a pak 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, vrátí odkazovaný objekt.

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

Platí pro

Viz také