ExpressionEditor.EvaluateExpression Method
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Evaluates an expression string and provides the design-time value for a control property.
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
Parameters
- expression
- String
An expression string to evaluate. The expression does not include the expression prefix.
- parseTimeData
- Object
An object containing additional parsing information for evaluating expression
. This typically is provided by the expression builder.
- propertyType
- Type
The type of the control property to which expression
is bound.
- serviceProvider
- IServiceProvider
A service provider implementation supplied by the designer host, used to obtain additional design-time services.
Returns
The object referenced by the evaluated expression string, if the expression evaluation succeeded; otherwise, null
.
Remarks
The visual designer host uses the EvaluateExpression method to evaluate an expression and provide the design-time value for an associated control property.
The visual designer uses the ExpressionBuilder.ParseExpression method to parse the expression string at design time, and then calls the EvaluateExpression method with the parsed expression data. The visual designer uses the evaluated expression result to assign control property values that are rendered on the design surface.
Notes to Implementers
Classes deriving from the ExpressionEditor class must override the EvaluateExpression(String, Object, Type, IServiceProvider) method to evaluate the custom expression type at design time.
At a minimum, an EvaluateExpression(String, Object, Type, IServiceProvider) implementation must use the following steps:
Evaluate the expression string and determine the object that is referenced by the expression.
Return
null
, if the expression string cannot be evaluated.Use the IsAssignableFrom(Type) method on
propertyType
to determine whether the referenced object can be assigned directly to the control property type, and then, depending on the result, complete one of the following actions:If the referenced object can be assigned directly to the control property, return the referenced object for the expression.
If the referenced object is a simple type, such as a string, return the referenced object.
Otherwise, determine whether the referenced object can be assigned to or converted to the property type.
Use the CanConvertFrom method on the TypeConverter object for
propertyType
to determine whether the referenced object can be converted to the control property type, and then, depending on the result, complete one of the following actions:If the object can be converted to the control property type, return the converted object using the ConvertFrom method.
If the referenced object cannot be assigned or converted to
propertyType
, return the referenced object.
Optionally, the EvaluateExpression(String, Object, Type, IServiceProvider) implementation can use the parseTimeData
object that is supplied by the ParseExpression(String, Type, ExpressionBuilderContext) implementation to optimize or help in the evaluation of the input expression string.