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 nicht das Präfix des Ausdrucks.

parseTimeData
Object

Ein Objekt, das zusätzliche Analyseinformationen für die Auswertung expressionenthält. Dies wird in der Regel vom Ausdrucks-Generator bereitgestellt.

propertyType
Type

Der Typ der Steuerelementeigenschaft, an die expression gebunden ist.

serviceProvider
IServiceProvider

Eine vom Designerhost bereitgestellte Dienstanbieterimplementierung, die zum Abrufen zusätzlicher Entwurfszeitdienste verwendet wird.

Gibt zurück

Das Objekt, auf das von der ausgewerteten Ausdruckszeichenfolge verwiesen wird, wenn die Ausdrucksauswertung erfolgreich war; 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

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

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

  1. Wertet die Ausdruckszeichenfolge aus, und bestimmen Sie das Objekt, auf das durch den Ausdruck verwiesen wird.

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

  3. Verwenden Sie die IsAssignableFrom(Type) Methode, propertyType um zu bestimmen, ob das referenzierte Objekt direkt dem Steuerelementeigenschaftentyp zugewiesen werden kann, und führen Sie dann abhängig vom Ergebnis eine der folgenden Aktionen aus:

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

    • Wenn das referenzierte Objekt ein einfacher Typ ist, z. B. eine Zeichenfolge, geben Sie das referenzierte Objekt zurück.

    • Bestimmen Sie andernfalls, ob das referenzierte Objekt dem Eigenschaftstyp zugewiesen oder konvertiert werden kann.

  4. Verwenden Sie die CanConvertFrom Methode für das TypeConverter Objekt propertyType , um zu bestimmen, ob das referenzierte Objekt in den Steuerelementeigenschaftstyp konvertiert werden kann, und führen Sie dann abhängig vom Ergebnis eine der folgenden Aktionen aus:

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

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

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

Gilt für:

Weitere Informationen