Compartilhar via


ExpressionEditor.EvaluateExpression Método

Definição

Avalia uma cadeia de caracteres de expressão e fornece o valor de tempo de design para uma propriedade de controle.

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

Uma cadeia de caracteres da expressão a ser avaliada. A expressão não inclui o prefixo de expressão.

parseTimeData
Object

Um objeto que contém informações de análise adicionais para avaliar a expression. Isso geralmente é fornecido pelo construtor de expressões.

propertyType
Type

O tipo da propriedade de controle à qual a expression está associada.

serviceProvider
IServiceProvider

Uma implementação do provedor de serviço fornecida pelo host do designer, usada para obter serviços de tempo de design adicionais.

Retornos

Object

O objeto referenciado pela cadeia de caracteres de expressão avaliada se a avaliação da expressão for bem-sucedida; caso contrário, null.

Comentários

O host do designer visual usa o EvaluateExpression método para avaliar uma expressão e fornecer o valor de tempo de design para uma propriedade de controle associada.

O designer visual usa o ExpressionBuilder.ParseExpression método para analisar a cadeia de caracteres de expressão em tempo de design e, em seguida, chama o EvaluateExpression método com os dados de expressão analisados. O designer visual usa o resultado da expressão avaliada para atribuir valores de propriedade de controle que são renderizados na superfície de design.

Notas aos Implementadores

Classes derivadas da ExpressionEditor classe devem substituir o EvaluateExpression(String, Object, Type, IServiceProvider) método para avaliar o tipo de expressão personalizada no momento do design.

No mínimo, uma implementação EvaluateExpression(String, Object, Type, IServiceProvider) deve usar as seguintes etapas:

  1. Avalie a cadeia de caracteres de expressão e determine o objeto referenciado pela expressão.

  2. Retornar null, se a cadeia de caracteres de expressão não puder ser avaliada.

  3. Use o IsAssignableFrom(Type) método propertyType para determinar se o objeto referenciado pode ser atribuído diretamente ao tipo de propriedade de controle e, dependendo do resultado, conclua uma das seguintes ações:

  • Se o objeto referenciado puder ser atribuído diretamente à propriedade de controle, retorne o objeto referenciado para a expressão.

  • Se o objeto referenciado for um tipo simples, como uma cadeia de caracteres, retorne o objeto referenciado.

  • Caso contrário, determine se o objeto referenciado pode ser atribuído ou convertido no tipo de propriedade.

  1. Use o CanConvertFrom método no TypeConverter objeto para propertyType determinar se o objeto referenciado pode ser convertido no tipo de propriedade de controle e, dependendo do resultado, conclua uma das seguintes ações:
  • Se o objeto puder ser convertido no tipo de propriedade de controle, retorne o objeto convertido usando o ConvertFrom método.

  • Se o objeto referenciado não puder ser atribuído ou convertido propertyType, retorne o objeto referenciado.

Opcionalmente, a EvaluateExpression(String, Object, Type, IServiceProvider) implementação pode usar o parseTimeData objeto fornecido pela ParseExpression(String, Type, ExpressionBuilderContext) implementação para otimizar ou ajudar na avaliação da cadeia de caracteres de expressão de entrada.

Aplica-se a

Confira também