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

デザイナー ホストによって提供されるサービス プロバイダーの実装。追加のデザイン時サービスを取得するために使用されます。

返品

式の評価が成功した場合に、評価された式文字列によって参照されるオブジェクト。それ以外の場合は null

注釈

ビジュアル デザイナー ホストでは、 EvaluateExpression メソッドを使用して式を評価し、関連付けられているコントロール プロパティのデザイン時の値を指定します。

ビジュアル デザイナーは、デザイン時に ExpressionBuilder.ParseExpression メソッドを使用して式文字列を解析し、解析された式データを使用して EvaluateExpression メソッドを呼び出します。 ビジュアル デザイナーは、評価された式の結果を使用して、デザイン サーフェイスにレンダリングされるコントロール プロパティ値を割り当てます。

注意 (実装者)

ExpressionEditor クラスから派生するクラスは、デザイン時にカスタム式の型を評価するために、EvaluateExpression(String, Object, Type, IServiceProvider) メソッドをオーバーライドする必要があります。

少なくとも、 EvaluateExpression(String, Object, Type, IServiceProvider) 実装では、次の手順を使用する必要があります。

  1. 式文字列を評価し、式によって参照されるオブジェクトを決定します。

  2. 式文字列を評価できない場合は、 nullを返します。

  3. propertyTypeIsAssignableFrom(Type) メソッドを使用して、参照先オブジェクトをコントロール プロパティ型に直接割り当てることができるかどうかを判断し、結果に応じて、次のいずれかのアクションを実行します。

    • 参照先オブジェクトをコントロール プロパティに直接割り当てることができる場合は、式の参照先オブジェクトを返します。

    • 参照先オブジェクトが文字列などの単純型の場合は、参照先オブジェクトを返します。

    • それ以外の場合は、参照先オブジェクトをプロパティ型に割り当てることができるか、プロパティ型に変換できるかを判断します。

  4. propertyTypeTypeConverter オブジェクトのCanConvertFrom メソッドを使用して、参照先のオブジェクトをコントロール プロパティ型に変換できるかどうかを判断し、結果に応じて、次のいずれかのアクションを実行します。

    • オブジェクトをコントロール プロパティ型に変換できる場合は、 ConvertFrom メソッドを使用して変換されたオブジェクトを返します。

    • 参照先オブジェクトを propertyTypeに割り当てまたは変換できない場合は、参照先オブジェクトを返します。

必要に応じて、EvaluateExpression(String, Object, Type, IServiceProvider)実装では、ParseExpression(String, Type, ExpressionBuilderContext)実装によって提供されるparseTimeData オブジェクトを使用して、入力式文字列の評価を最適化または支援できます。

適用対象

こちらもご覧ください