ExpressionEditor.EvaluateExpression Metod

Definition

Utvärderar en uttryckssträng och tillhandahåller designtidsvärdet för en kontrollegenskap.

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

Parametrar

expression
String

En uttryckssträng som ska utvärderas. Uttrycket innehåller inte uttrycksprefixet.

parseTimeData
Object

Ett objekt som innehåller ytterligare parsningsinformation för utvärdering av expression. Detta tillhandahålls vanligtvis av uttrycksverktyget.

propertyType
Type

Typ av kontrollegenskap som expression är bunden till.

serviceProvider
IServiceProvider

En implementering av tjänstleverantören som tillhandahålls av designervärden används för att hämta ytterligare designtidstjänster.

Returer

Objektet som refereras av den utvärderade uttryckssträngen, om uttrycksutvärderingen lyckades. annars . null

Kommentarer

Den visuella designervärden använder EvaluateExpression metoden för att utvärdera ett uttryck och ange designtidsvärdet för en associerad kontrollegenskap.

Den visuella designern använder ExpressionBuilder.ParseExpression metoden för att parsa uttryckssträngen vid designtillfället och anropar EvaluateExpression sedan metoden med parsade uttrycksdata. Den visuella designern använder det utvärderade uttrycksresultatet för att tilldela kontrollegenskapsvärden som återges på designytan.

Anteckningar till implementerare

Klasser som härleds från ExpressionEditor klassen måste åsidosätta EvaluateExpression(String, Object, Type, IServiceProvider) metoden för att utvärdera den anpassade uttryckstypen vid designtillfället.

En implementering måste minst EvaluateExpression(String, Object, Type, IServiceProvider) använda följande steg:

  1. Utvärdera uttryckssträngen och fastställa det objekt som refereras till av uttrycket.

  2. Returnera nullom uttryckssträngen inte kan utvärderas.

  3. IsAssignableFrom(Type) Använd metoden på propertyType för att avgöra om det refererade objektet kan tilldelas direkt till kontrollegenskapstypen och sedan, beroende på resultatet, utföra någon av följande åtgärder:

    • Om det refererade objektet kan tilldelas direkt till kontrollegenskapen returnerar du det refererade objektet för uttrycket.

    • Om det refererade objektet är en enkel typ, till exempel en sträng, returnerar du det refererade objektet.

    • I annat fall avgör du om det refererade objektet kan tilldelas till eller konverteras till egenskapstypen.

  4. CanConvertFrom Använd -metoden på TypeConverter objektet för för propertyType att avgöra om det refererade objektet kan konverteras till egenskapstypen för kontroll och sedan, beroende på resultatet, utföra någon av följande åtgärder:

    • Om objektet kan konverteras till kontrollegenskapstypen returnerar du det konverterade objektet med hjälp av ConvertFrom metoden .

    • Om det refererade objektet inte kan tilldelas eller konverteras till propertyTypereturnerar du det refererade objektet.

Om du vill kan implementeringen EvaluateExpression(String, Object, Type, IServiceProvider) använda det parseTimeData objekt som tillhandahålls av implementeringen ParseExpression(String, Type, ExpressionBuilderContext) för att optimera eller hjälpa till med utvärderingen av indatauttryckssträngen.

Gäller för

Se även