ExpressionEditor.EvaluateExpression 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
評估一個表達式字串,並提供控制屬性的設計時值。
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
由設計主機提供的服務提供者實作,用於取得額外的設計時服務。
傳回
若運算式運算成功,則為該受評估式字串所參考的物件;否則,。 null
備註
視覺設計主機利用此 EvaluateExpression 方法評估表達式並提供相關控制屬性的設計時值。
視覺化設計師在設計時使用該 ExpressionBuilder.ParseExpression 方法解析表達字串,然後用解析後的表達式資料呼叫該 EvaluateExpression 方法。 視覺設計師會利用評估後的表達式結果來指派控制屬性值,這些屬性會被渲染在設計表面上。
給實施者的注意事項
從該 ExpressionEditor 類別衍生的類別必須在設計時覆寫該 EvaluateExpression(String, Object, Type, IServiceProvider) 方法以評估自訂表達式類型。
至少, EvaluateExpression(String, Object, Type, IServiceProvider) 實作必須使用以下步驟:
評估表達式字串並確定該表達式所參考的物件。
若無法求值表達式字串,則回傳
null。使用 IsAssignableFrom(Type) 方法來
propertyType判斷參考物件是否能直接指派到控制屬性類型,然後根據結果完成以下其中一個動作:如果參考物件可以直接指派到 Control 屬性,則回傳該表示式的參考物件。
如果被參考的物件是簡單型別,例如字串,則回傳該物件。
否則,判斷所參考物件是否能被指派或轉換為屬性類型。
使用CanConvertFrom物件上的 TypeConverter 方法
propertyType判斷該物件是否能轉換為控制屬性類型,然後根據結果執行以下其中一個動作:如果物件可以轉換成控制屬性類型,請使用該 ConvertFrom 方法回傳轉換後的物件。
如果無法將被引用的物件指派或轉換到
propertyType,則回傳該被參考的物件。
可選擇性地,實 EvaluateExpression(String, Object, Type, IServiceProvider) 作可利用 parseTimeData 實 ParseExpression(String, Type, ExpressionBuilderContext) 作所提供的物件來優化或協助評估輸入表達字串。