ExpressionEditor.EvaluateExpression Methode

Definitie

Evalueert een expressietekenreeks en levert de ontwerptijdwaarde voor een besturingselementeigenschap.

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

Parameters

expression
String

Een expressietekenreeks die moet worden geëvalueerd. De expressie bevat niet het expressievoorvoegsel.

parseTimeData
Object

Een object met aanvullende parseringsinformatie voor evaluatie expression. Dit wordt meestal geleverd door de opbouwfunctie voor expressies.

propertyType
Type

Het type besturingselementeigenschap waaraan expression is gebonden.

serviceProvider
IServiceProvider

Een implementatie van een serviceprovider die wordt geleverd door de ontwerphost, die wordt gebruikt om aanvullende ontwerptijdservices te verkrijgen.

Retouren

Het object waarnaar wordt verwezen door de geëvalueerde expressietekenreeks, als de expressie-evaluatie is geslaagd; anders, null.

Opmerkingen

De visual designer-host gebruikt de EvaluateExpression methode om een expressie te evalueren en de ontwerptijdwaarde op te geven voor een bijbehorende besturingselementeigenschap.

De visualontwerper gebruikt de ExpressionBuilder.ParseExpression methode om de expressietekenreeks tijdens het ontwerp te parseren en roept vervolgens de EvaluateExpression methode aan met de geparseerde expressiegegevens. De visualontwerper gebruikt het resultaat van de geëvalueerde expressie om eigenschapswaarden toe te wijzen die op het ontwerpoppervlak worden weergegeven.

Notities voor uitvoerders

Klassen die zijn afgeleid van de ExpressionEditor klasse, moeten de EvaluateExpression(String, Object, Type, IServiceProvider) methode overschrijven om het aangepaste expressietype tijdens het ontwerp te evalueren.

Ten minste moet een EvaluateExpression(String, Object, Type, IServiceProvider) implementatie de volgende stappen uitvoeren:

  1. Evalueer de expressietekenreeks en bepaal het object waarnaar wordt verwezen door de expressie.

  2. Retourneren null, als de expressietekenreeks niet kan worden geëvalueerd.

  3. Gebruik de IsAssignableFrom(Type) methode om propertyType te bepalen of het object waarnaar wordt verwezen rechtstreeks aan het type besturingselementeigenschap kan worden toegewezen en voer vervolgens, afhankelijk van het resultaat, een van de volgende acties uit:

    • Als het object waarnaar wordt verwezen rechtstreeks aan de besturingselementeigenschap kan worden toegewezen, retourneert u het object waarnaar wordt verwezen voor de expressie.

    • Als het object waarnaar wordt verwezen een eenvoudig type is, zoals een tekenreeks, retourneert u het object waarnaar wordt verwezen.

    • Anders bepaalt u of het object waarnaar wordt verwezen, kan worden toegewezen aan of geconverteerd naar het eigenschapstype.

  4. Gebruik de CanConvertFrom methode voor TypeConverter het propertyType object om te bepalen of het object waarnaar wordt verwezen, kan worden geconverteerd naar het type besturingselementeigenschap en voer vervolgens, afhankelijk van het resultaat, een van de volgende acties uit:

    • Als het object kan worden geconverteerd naar het eigenschapstype van het besturingselement, retourneert u het geconverteerde object met behulp van de ConvertFrom methode.

    • Als het object waarnaar wordt verwezen niet kan worden toegewezen of geconverteerd, retourneert propertyTypeu het object waarnaar wordt verwezen.

Optioneel kan de EvaluateExpression(String, Object, Type, IServiceProvider) implementatie het parseTimeData object gebruiken dat door de ParseExpression(String, Type, ExpressionBuilderContext) implementatie wordt geleverd om de invoerexpressiereeks te optimaliseren of te helpen bij de evaluatie van de tekenreeks voor invoerexpressies.

Van toepassing op

Zie ook