Share via


ExpressionEditor.EvaluateExpression Methode

Definition

Wertet eine Ausdruckszeichenfolge aus und stellt den Entwurfszeitwert für eine Steuerelementeigenschaft bereit.

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

Parameter

expression
String

Eine auszuwertende Ausdruckszeichenfolge. Der Ausdruck enthält das Ausdruckspräfix nicht.

parseTimeData
Object

Ein Objekt, das zusätzliche Analyseinformationen für das Auswerten von expression enthält. Dieses wird i. d. R. vom Ausdrucks-Generator zur Verfügung gestellt.

propertyType
Type

Der Typ der Steuerelementeigenschaft, an den expression gebunden wird.

serviceProvider
IServiceProvider

Eine vom Designerhost bereitgestellte Dienstanbieterimplementierung zur Beschaffung zusätzlicher Entwurfszeitdienste.

Gibt zurück

Das Objekt, auf das durch die ausgewertete Ausdruckszeichenfolge verwiesen wird, sofern der Ausdruck ausgewertet werden konnte, andernfalls null.

Hinweise

Der Host des visuellen Designers verwendet die EvaluateExpression -Methode, um einen Ausdruck auszuwerten und den Entwurfszeitwert für eine zugeordnete Steuerelementeigenschaft bereitzustellen.

Der visuelle Designer verwendet die ExpressionBuilder.ParseExpression -Methode, um die Ausdruckszeichenfolge zur Entwurfszeit zu analysieren, und ruft dann die EvaluateExpression -Methode mit den analysierten Ausdrucksdaten auf. Der visuelle Designer verwendet das ausgewertete Ausdrucksergebnis, um Steuerelementeigenschaftenwerte zuzuweisen, die auf der Entwurfsoberfläche gerendert werden.

Hinweise für Ausführende

Von der ExpressionEditor -Klasse abgeleitete Klassen müssen die EvaluateExpression(String, Object, Type, IServiceProvider) -Methode überschreiben, um den benutzerdefinierten Ausdruckstyp zur Entwurfszeit auszuwerten.

Mindestens muss eine EvaluateExpression(String, Object, Type, IServiceProvider) Implementierung die folgenden Schritte ausführen:

  1. Werten Sie die Ausdruckszeichenfolge aus, und bestimmen Sie das Objekt, auf das der Ausdruck verweist.

  2. Gibt zurück null, wenn die Ausdruckszeichenfolge nicht ausgewertet werden kann.

  3. Verwenden Sie die IsAssignableFrom(Type) -Methode für propertyType , um zu bestimmen, ob das Objekt, auf das verwiesen wird, direkt dem Steuerelementeigenschaftentyp zugewiesen werden kann, und führen Sie dann je nach Ergebnis eine der folgenden Aktionen aus:

    • Wenn das Objekt, auf das verwiesen wird, direkt der Steuerelementeigenschaft zugewiesen werden kann, geben Sie das Objekt zurück, auf das verwiesen wird, für den Ausdruck.

    • Wenn das Objekt, auf das verwiesen wird, ein einfacher Typ ist, z. B. eine Zeichenfolge, gibt das Objekt zurück, auf das verwiesen wird.

    • Bestimmen Sie andernfalls, ob das Objekt, auf das verwiesen wird, dem Eigenschaftstyp zugewiesen oder in diesen konvertiert werden kann.

  4. Verwenden Sie die CanConvertFrom -Methode für das TypeConverter -Objekt für propertyType , um zu bestimmen, ob das Objekt, auf das verwiesen wird, in den Steuerelementeigenschaftentyp konvertiert werden kann, und führen Sie dann je nach Ergebnis eine der folgenden Aktionen aus:

    • Wenn das Objekt in den Steuerelementeigenschaftentyp konvertiert werden kann, geben Sie das konvertierte Objekt mithilfe der ConvertFrom -Methode zurück.

    • Wenn das Objekt, auf das verwiesen wird, nicht zugewiesen oder in konvertiert propertyTypewerden kann, geben Sie das Objekt zurück, auf das verwiesen wird.

Optional kann die Implementierung das EvaluateExpression(String, Object, Type, IServiceProvider) von der parseTimeDataParseExpression(String, Type, ExpressionBuilderContext) Implementierung bereitgestellte Objekt verwenden, um die Auswertung der Eingabeausdruckzeichenfolge zu optimieren oder zu unterstützen.

Gilt für:

Weitere Informationen