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