ExpressionEditor.EvaluateExpression Método

Definição

Avalia uma cadeia de expressão e fornece o valor em tempo de projeto para uma propriedade de controlo.

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 expressão para avaliar. A expressão não inclui o prefixo de expressão.

parseTimeData
Object

Um objeto contendo informação adicional de análise para avaliar expression. Isto é tipicamente fornecido pelo construtor de expressões.

propertyType
Type

O tipo da propriedade de controlo à qual expression está vinculada.

serviceProvider
IServiceProvider

Uma implementação de fornecedor de serviços fornecida pelo anfitrião projetista, usada para obter serviços adicionais em tempo de design.

Devoluções

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

Observações

O hospedeiro designer visual utiliza o EvaluateExpression método para avaliar uma expressão e fornecer o valor em tempo de design para uma propriedade de controlo associada.

O designer visual usa o ExpressionBuilder.ParseExpression método para analisar a string de expressão em tempo de design e depois chama o EvaluateExpression método com os dados de expressão analisados. O designer visual utiliza o resultado da expressão avaliada para atribuir valores de propriedades de controlo que são renderizados na superfície do design.

Notas para Implementadores

As classes derivadas da ExpressionEditor classe devem sobrepor-se ao EvaluateExpression(String, Object, Type, IServiceProvider) método para avaliar o tipo de expressão personalizado no momento do design.

No mínimo, uma EvaluateExpression(String, Object, Type, IServiceProvider) implementação deve seguir os seguintes passos:

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

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

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

    • Se o objeto referenciado puder ser atribuído diretamente à propriedade de controlo, devolve-se o objeto referenciado para a expressão.

    • Se o objeto referenciado for um tipo simples, como uma cadeia, devolve o objeto referenciado.

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

  4. Use o CanConvertFrom método no TypeConverter objeto para propertyType determinar se o objeto referenciado pode ser convertido para o tipo de propriedade de controlo e, depois, dependendo do resultado, complete uma das seguintes ações:

    • Se o objeto puder ser convertido para o tipo de propriedade de controlo, devolve o objeto convertido usando o ConvertFrom método.

    • Se o objeto referenciado não puder ser atribuído ou convertido para propertyType, devolve 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 expressão de entrada.

Aplica-se a

Ver também