Share via


ExpressionEditor.EvaluateExpression 方法

定義

評估運算式字串,並提供控制項屬性的設計階段值。

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

參數

expression
String

要評估的運算式字串。 運算式不包含運算式前置字元。

parseTimeData
Object

物件,包含用於評估 expression 的其他剖析資訊。 這通常由運算式產生器提供。

propertyType
Type

expression 所繫結之控制項屬性的類型。

serviceProvider
IServiceProvider

服務提供者實作,由設計工具主應用程式 (Designer Host) 提供,可以用來取得額外的設計階段服務。

傳回

運算式評估成功時,評估的運算式字串所參考的物件,否則為 null

備註

視覺化設計工具主機會 EvaluateExpression 使用 方法來評估運算式,並提供相關聯控制項屬性的設計時間值。

視覺化設計工具會 ExpressionBuilder.ParseExpression 使用 方法在設計階段剖析運算式字串,然後使用剖析的運算式資料呼叫 EvaluateExpression 方法。 視覺化設計工具會使用評估的運算式結果來指派在設計介面上呈現的控制項屬性值。

給實施者的注意事項

衍生自 類別的 ExpressionEditor 類別必須覆寫 EvaluateExpression(String, Object, Type, IServiceProvider) 方法,以在設計階段評估自訂表格達式類型。

實作至少 EvaluateExpression(String, Object, Type, IServiceProvider) 必須使用下列步驟:

  1. 評估運算式字串,並判斷運算式所參考的物件。

  2. 如果無法評估運算式字串,則傳回 null

  3. IsAssignableFrom(Type)使用 上的 propertyType 方法來判斷參考的物件是否可以直接指派給控制項屬性類型,然後根據結果完成下列其中一個動作:

    • 如果可以直接將參考的物件指派給控制項屬性,則傳回運算式的參考物件。

    • 如果參考的物件是簡單類型,例如字串,則傳回參考的物件。

    • 否則,判斷參考的物件是否可以指派給或轉換成屬性類型。

  4. CanConvertFrom使用 物件 propertyType 上的 TypeConverter 方法,判斷參考的物件是否可以轉換成控制項屬性類型,然後根據結果完成下列其中一個動作:

    • 如果物件可以轉換成控制項屬性類型,請使用 ConvertFrom 方法傳回已轉換的物件。

    • 如果參考的物件無法指派或轉換成 propertyType ,則傳回參考的物件。

或者,實 EvaluateExpression(String, Object, Type, IServiceProvider) 作可以使用 parseTimeData 實作所提供的 ParseExpression(String, Type, ExpressionBuilderContext) 物件,來優化或協助評估輸入運算式字串。

適用於

另請參閱