次の方法で共有


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

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

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

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

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

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

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

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

適用対象

こちらもご覧ください