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を返します。propertyTypeで IsAssignableFrom(Type) メソッドを使用して、参照先オブジェクトをコントロール プロパティ型に直接割り当てることができるかどうかを判断し、結果に応じて、次のいずれかのアクションを実行します。参照先オブジェクトをコントロール プロパティに直接割り当てることができる場合は、式の参照先オブジェクトを返します。
参照先オブジェクトが文字列などの単純型の場合は、参照先オブジェクトを返します。
それ以外の場合は、参照先オブジェクトをプロパティ型に割り当てることができるか、プロパティ型に変換できるかを判断します。
propertyTypeのTypeConverter オブジェクトのCanConvertFrom メソッドを使用して、参照先のオブジェクトをコントロール プロパティ型に変換できるかどうかを判断し、結果に応じて、次のいずれかのアクションを実行します。オブジェクトをコントロール プロパティ型に変換できる場合は、 ConvertFrom メソッドを使用して変換されたオブジェクトを返します。
参照先オブジェクトを
propertyTypeに割り当てまたは変換できない場合は、参照先オブジェクトを返します。
必要に応じて、EvaluateExpression(String, Object, Type, IServiceProvider)実装では、ParseExpression(String, Type, ExpressionBuilderContext)実装によって提供されるparseTimeData オブジェクトを使用して、入力式文字列の評価を最適化または支援できます。