ExpressionEditor.EvaluateExpression Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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
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:
Valutare la stringa dell'espressione e determinare l'oggetto a cui fa riferimento l'espressione.
Restituisce
null
, se la stringa dell'espressione non può essere valutata.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à.
- 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.