ExpressionEditor Classe
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.
Definisce un set di proprietà e di metodi per la valutazione di un'espressione associata alla proprietà del controllo in fase di progettazione e per fornire una pagina dell'editor di espressioni all'host di progettazione visiva per l'utilizzo nella finestra di dialogo dell'editori di espressioni. Questa classe è astratta.
public ref class ExpressionEditor abstract
public abstract class ExpressionEditor
type ExpressionEditor = class
Public MustInherit Class ExpressionEditor
- Ereditarietà
-
ExpressionEditor
- Derivato
Esempio
Nell'esempio di codice seguente viene illustrato come derivare dalla ExpressionEditor classe per definire un editor di espressioni personalizzato.
using System;
using System.Collections;
using System.Collections.Specialized;
using System.CodeDom;
using System.Configuration;
using System.Web.UI.Design;
using System.Web.Compilation;
namespace ExpressionEditorSamples.CS
{
[ExpressionPrefix("CustomAppSettings")]
[ExpressionEditor(typeof(ExpressionEditorSamples.CS.CustomAppSettingsEditor))]
public class CustomAppSettingsBuilder : AppSettingsExpressionBuilder
{
// Use the built-in AppSettingsExpressionBuilder class,
// but associate it with a custom expression editor class.
}
public class CustomAppSettingsEditor : System.Web.UI.Design.ExpressionEditor
{
public override object EvaluateExpression(string expression, object parseTimeData, Type propertyType, IServiceProvider serviceProvider)
{
KeyValueConfigurationCollection customSettings = null;
if (serviceProvider != null)
{
IWebApplication webApp = (IWebApplication)serviceProvider.GetService(typeof(IWebApplication));
if (webApp != null)
{
Configuration config = webApp.OpenWebConfiguration(true);
if (config != null)
{
AppSettingsSection settingsSection = config.AppSettings;
if (settingsSection != null)
{
customSettings = settingsSection.Settings;
}
}
}
}
if (customSettings != null)
{
return customSettings[expression];
}
return expression;
}
}
}
Commenti
Un host della finestra di progettazione visiva, ad esempio Visual Studio 2005, usa la ExpressionEditor classe per presentare fogli dell'editor di espressioni personalizzati all'utente e quindi valutare l'espressione selezionata per il rendering in fase di progettazione.
Quando si sfoglia la Expressions proprietà per un controllo nella griglia Proprietà in fase di progettazione, nella finestra di progettazione visiva viene visualizzata una finestra di dialogo per impostare le espressioni per una proprietà del controllo. È possibile selezionare il tipo di espressione in base a un elenco di prefissi di espressione. Quando si seleziona un prefisso di espressione dall'elenco, la finestra di progettazione visiva usa gli oggetti e ExpressionEditorSheet associati ExpressionEditor per impostare, valutare e convertire la stringa di espressione in base alla sintassi per tale tipo di espressione. La finestra di progettazione visiva imposta l'espressione per la proprietà del controllo associata e quindi usa il risultato dell'espressione valutata per assegnare i valori delle proprietà del controllo di cui viene eseguito il rendering nell'area di progettazione.
I metodi statici GetExpressionEditor ottengono l'editor di espressioni associato a un prefisso di espressione o a un generatore di espressioni specifico. La ExpressionPrefix proprietà per un ExpressionEditor oggetto restituisce il prefisso dell'espressione configurato. Il EvaluateExpression metodo valuta una stringa di espressione di input. Il GetExpressionEditorSheet metodo restituisce l'implementazione ExpressionEditorSheet utilizzata per richiedere le proprietà dell'espressione personalizzata nella finestra di dialogo Espressioni.
In genere, per supportare un nuovo tipo di espressione in fase di progettazione, è necessario definire un prefisso di espressione univoco e fornire implementazioni e ExpressionEditor personalizzateExpressionBuilder. Facoltativamente, è possibile fornire un'implementazione personalizzata ExpressionEditorSheet che definisce le proprietà utilizzate per formare l'espressione nella finestra di dialogo espressioni.
Il prefisso dell'espressione identifica il tipo di espressione personalizzata e associa un'espressione al generatore di espressioni e all'editor di espressioni. Quando le espressioni personalizzate vengono analizzate in una pagina, il prefisso dell'espressione viene usato per creare istanze delle classi e ExpressionEditor associateExpressionBuilder. Per associare un prefisso di espressione a un generatore di espressioni e a un editor di espressioni, applicare gli ExpressionEditorAttribute attributi e ExpressionPrefixAttribute alla classe personalizzata ExpressionBuilder e configurare il prefisso dell'espressione per un generatore di espressioni nell'elemento expressionBuilders
nel file di configurazione Web. Il prefisso non è obbligatorio, ma altamente consigliato.
Note per gli implementatori
Nella derivazione di una classe personalizzata ExpressionEditor sono necessari i passaggi seguenti:
Eseguire l'override del EvaluateExpression(String, Object, Type, IServiceProvider) metodo per valutare il tipo di espressione personalizzata in fase di progettazione.
Facoltativamente, eseguire l'override del GetExpressionEditorSheet(String, IServiceProvider) metodo per restituire una classe personalizzata che definisce le proprietà combinate per formare l'espressione personalizzata.
Applicare l'attributo ExpressionEditorAttribute alla dichiarazione di ExpressionBuilder classe per associare il generatore di espressioni personalizzate alla classe dell'editor di espressioni derivate.
Ad esempio, la ResourceExpressionEditor classe deriva dalla ExpressionEditor classe e fornisce un'implementazione per la valutazione e l'associazione di un riferimento stringa di risorsa a una proprietà del controllo in fase di progettazione. La ResourceExpressionBuilder classe è associata al prefisso Resources
dell'espressione e all'implementazione ResourceExpressionEditor . Il GetExpressionEditorSheet(String, IServiceProvider) metodo restituisce un ResourceExpressionEditorSheetoggetto , che definisce le singole proprietà che formano un'espressione di riferimento alla risorsa.
Costruttori
ExpressionEditor() |
Inizializza una nuova istanza della classe ExpressionEditor. |
Proprietà
ExpressionPrefix |
Ottiene il prefisso di espressione che identifica le stringhe di espressione supportate dall'implementazione dell'editor di espressioni. |
Metodi
Equals(Object) |
Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object) |
EvaluateExpression(String, Object, Type, IServiceProvider) |
Valuta una stringa di espressione e fornisce il valore in fase di progettazione per una proprietà del controllo. |
GetExpressionEditor(String, IServiceProvider) |
Restituisce un'implementazione di ExpressionEditor associata al prefisso di espressione specificato. |
GetExpressionEditor(Type, IServiceProvider) |
Restituisce un'implementazione di ExpressionEditor associata al prefisso di generatore di espressioni specificato. |
GetExpressionEditorSheet(String, IServiceProvider) |
Restituisce una pagina dell'editor di espressioni associata all'editor di espressioni corrente. |
GetHashCode() |
Funge da funzione hash predefinita. (Ereditato da Object) |
GetType() |
Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object) |
MemberwiseClone() |
Crea una copia superficiale dell'oggetto Object corrente. (Ereditato da Object) |
ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |