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确定是否可以将引用的对象直接分配给控件属性类型,然后根据结果完成下列操作之一:如果可以直接将引用的对象分配给控件属性,则返回表达式的引用对象。
如果引用的对象是简单类型(如字符串),则返回引用的对象。
否则,请确定是否可以将引用的对象分配给或转换为属性类型。
CanConvertFrom使用对象上的TypeConverter方法来确定引用的对象
propertyType是否可以转换为控件属性类型,然后根据结果完成下列操作之一:如果对象可以转换为控件属性类型,请使用 ConvertFrom 该方法返回转换的对象。
如果无法分配或转换为
propertyType引用的对象,则返回引用的对象。
(可选) EvaluateExpression(String, Object, Type, IServiceProvider) 实现可以使用 parseTimeData 实现提供 ParseExpression(String, Type, ExpressionBuilderContext) 的对象来优化或帮助计算输入表达式字符串。