ExpressionEditor.EvaluateExpression Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Evalúa una cadena de expresión y proporciona el valor en tiempo de diseño de una propiedad de control.
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
Parámetros
- expression
- String
Cadena de expresión que se va a evaluar. La expresión no incluye el prefijo de expresión.
- parseTimeData
- Object
Objeto que contiene información de análisis adicional para evaluar expression
. Normalmente, lo proporciona el generador de expresiones.
- propertyType
- Type
Tipo de la propiedad de control a la que expression
está enlazado.
- serviceProvider
- IServiceProvider
Implementación del proveedor de servicios proporcionada por el host del diseñador, que se utiliza para obtener servicios en tiempo de diseño adicionales.
Devoluciones
Objeto al que hace referencia la cadena de expresión evaluada si la evaluación de la expresión se realizó correctamente; en caso contrario, es null
.
Comentarios
El host del diseñador visual usa el EvaluateExpression método para evaluar una expresión y proporcionar el valor en tiempo de diseño para una propiedad de control asociada.
El diseñador visual usa el ExpressionBuilder.ParseExpression método para analizar la cadena de expresión en tiempo de diseño y, a continuación, llama al EvaluateExpression método con los datos de expresión analizados. El diseñador visual usa el resultado de la expresión evaluada para asignar valores de propiedad de control que se representan en la superficie de diseño.
Notas a los implementadores
Las clases que derivan de la ExpressionEditor clase deben invalidar el EvaluateExpression(String, Object, Type, IServiceProvider) método para evaluar el tipo de expresión personalizada en tiempo de diseño.
Como mínimo, una EvaluateExpression(String, Object, Type, IServiceProvider) implementación debe seguir estos pasos:
Evalúe la cadena de expresión y determine el objeto al que hace referencia la expresión.
Devuelve
null
, si no se puede evaluar la cadena de expresión.Use el IsAssignableFrom(Type) método en
propertyType
para determinar si el objeto al que se hace referencia se puede asignar directamente al tipo de propiedad de control y, a continuación, en función del resultado, complete una de las siguientes acciones:Si el objeto al que se hace referencia se puede asignar directamente a la propiedad de control, devuelva el objeto al que se hace referencia para la expresión.
Si el objeto al que se hace referencia es un tipo simple, como una cadena, devuelve el objeto al que se hace referencia.
De lo contrario, determine si el objeto al que se hace referencia se puede asignar o convertir en el tipo de propiedad.
Use el CanConvertFrom método en el TypeConverter objeto para
propertyType
determinar si el objeto al que se hace referencia se puede convertir en el tipo de propiedad de control y, a continuación, en función del resultado, complete una de las siguientes acciones:Si el objeto se puede convertir al tipo de propiedad de control, devuelva el objeto convertido mediante el ConvertFrom método .
Si el objeto al que se hace referencia no se puede asignar o convertir en
propertyType
, devuelva el objeto al que se hace referencia.
Opcionalmente, la EvaluateExpression(String, Object, Type, IServiceProvider) implementación puede usar el parseTimeData
objeto proporcionado por la ParseExpression(String, Type, ExpressionBuilderContext) implementación para optimizar o ayudar en la evaluación de la cadena de expresión de entrada.