Comparteix a través de


ExpressionEditor.EvaluateExpression Método

Definición

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:

  1. Evalúe la cadena de expresión y determine el objeto al que hace referencia la expresión.

  2. Devuelve null, si no se puede evaluar la cadena de expresión.

  3. 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.

  4. 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.

Se aplica a

Consulte también