ExpressionEditor.EvaluateExpression Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
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:
Vyhodnoťte řetězec výrazu a určete objekt, na který odkazuje výraz.
Vrátí
null
hodnotu , pokud řetězec výrazu nelze vyhodnotit.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.
- 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.