Condividi tramite


ExpressionEditor.EvaluateExpression Metodo

Definizione

Valuta una stringa di espressione e fornisce il valore in fase di progettazione per una proprietà del controllo.

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

Parametri

expression
String

Stringa di espressione da valutare. L'espressione non include il prefisso di espressione.

parseTimeData
Object

Oggetto contenente ulteriori informazioni di analisi per la valutazione di expression. Solitamente viene fornito dal generatore di espressioni.

propertyType
Type

Tipo di proprietà del controllo a cui è associato expression.

serviceProvider
IServiceProvider

Implementazione del provider di servizi fornita dall'host di progettazione, utilizzata per ottenere ulteriori servizi in fase di progettazione.

Restituisce

Object

L'oggetto a cui viene fatto riferimento dalla stringa di espressione valutata, se la valutazione dell'espressione ha avuto esito positivo; in caso contrario, null.

Commenti

L'host della finestra di progettazione visiva usa il EvaluateExpression metodo per valutare un'espressione e fornire il valore della fase di progettazione per una proprietà del controllo associata.

La finestra di progettazione visiva usa il ExpressionBuilder.ParseExpression metodo per analizzare la stringa dell'espressione in fase di progettazione e quindi chiama il EvaluateExpression metodo con i dati dell'espressione analizzata. La finestra di progettazione visiva usa il risultato dell'espressione valutata per assegnare i valori delle proprietà del controllo di cui viene eseguito il rendering nell'area di progettazione.

Note per gli implementatori

Le classi derivate dalla classe devono eseguire l'override ExpressionEditor del EvaluateExpression(String, Object, Type, IServiceProvider) metodo per valutare il tipo di espressione personalizzata in fase di progettazione.

Come minimo, un'implementazione EvaluateExpression(String, Object, Type, IServiceProvider) deve seguire questa procedura:

  1. Valutare la stringa dell'espressione e determinare l'oggetto a cui fa riferimento l'espressione.

  2. Restituisce null, se la stringa dell'espressione non può essere valutata.

  3. Utilizzare il IsAssignableFrom(Type) metodo su propertyType per determinare se l'oggetto a cui si fa riferimento può essere assegnato direttamente al tipo di proprietà del controllo e quindi, a seconda del risultato, completare una delle azioni seguenti:

  • Se l'oggetto a cui si fa riferimento può essere assegnato direttamente alla proprietà del controllo, restituire l'oggetto a cui si fa riferimento per l'espressione.

  • Se l'oggetto a cui si fa riferimento è un tipo semplice, ad esempio una stringa, restituire l'oggetto a cui si fa riferimento.

  • In caso contrario, determinare se l'oggetto a cui si fa riferimento può essere assegnato o convertito nel tipo di proprietà.

  1. Utilizzare il CanConvertFrom metodo sull'oggetto per per propertyType determinare se l'oggetto TypeConverter a cui si fa riferimento può essere convertito nel tipo di proprietà del controllo e quindi, a seconda del risultato, completare una delle azioni seguenti:
  • Se l'oggetto può essere convertito nel tipo di proprietà del controllo, restituire l'oggetto convertito utilizzando il ConvertFrom metodo .

  • Se l'oggetto a cui si fa riferimento non può essere assegnato o convertito in propertyType, restituire l'oggetto a cui si fa riferimento.

Facoltativamente, l'implementazione EvaluateExpression(String, Object, Type, IServiceProvider) può usare l'oggetto parseTimeData fornito dall'implementazione ParseExpression(String, Type, ExpressionBuilderContext) per ottimizzare o semplificare la valutazione della stringa dell'espressione di input.

Si applica a

Vedi anche