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 de 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 adicionais de análise para avaliação expression. Isso normalmente é fornecido pelo construtor de expressões.

propertyType
Type

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

serviceProvider
IServiceProvider

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

Retornos

O objeto referenciado pela cadeia de caracteres de expressão avaliada, se a avaliação da expressão tiver sido 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 analisada. 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

As classes derivadas da ExpressionEditor classe devem substituir o EvaluateExpression(String, Object, Type, IServiceProvider) método para avaliar o tipo de expressão personalizada em tempo de 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.

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