Compartir a través de


ExpressionEditor Clase

Definición

Define un conjunto de propiedades y métodos para evaluar una expresión asociada a la propiedad de un control en tiempo de diseño y para proporcionar una hoja de editor de expresiones al host de diseño visual para su uso en el cuadro de diálogo del editor de expresiones. Esta clase es abstracta.

public ref class ExpressionEditor abstract
public abstract class ExpressionEditor
type ExpressionEditor = class
Public MustInherit Class ExpressionEditor
Herencia
ExpressionEditor
Derivado

Ejemplos

En el ejemplo de código siguiente se muestra cómo derivar de la ExpressionEditor clase para definir un editor de expresiones personalizado.

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;
        }
    }
}

Comentarios

Un host de diseñador visual, como Visual Studio 2005, usa la ExpressionEditor clase para presentar hojas de editor de expresiones personalizadas al usuario y, a continuación, evaluar la expresión seleccionada para la representación en tiempo de diseño.

Al examinar la Expressions propiedad de un control en la cuadrícula Propiedades en tiempo de diseño, el diseñador visual muestra un cuadro de diálogo para establecer expresiones para una propiedad de control. Puede seleccionar el tipo de expresión en función de una lista de prefijos de expresión. Al seleccionar un prefijo de expresión de la lista, el diseñador visual usa los objetos y ExpressionEditorSheet asociados ExpressionEditor para establecer, evaluar y convertir la cadena de expresión en función de la sintaxis de ese tipo de expresión. El diseñador visual establece la expresión para la propiedad de control asociada y, a continuación, usa el resultado de la expresión evaluada para asignar valores de propiedad de control que se representan en la superficie de diseño.

Los métodos estáticos GetExpressionEditor obtienen el editor de expresiones asociado a un prefijo de expresión o generador de expresiones determinado. La ExpressionPrefix propiedad de un ExpressionEditor objeto devuelve el prefijo de expresión configurado. El EvaluateExpression método evalúa una cadena de expresión de entrada. El GetExpressionEditorSheet método devuelve la ExpressionEditorSheet implementación que se usa para solicitar las propiedades de expresión personalizada en el cuadro de diálogo expresiones.

Normalmente, para admitir un nuevo tipo de expresión en tiempo de diseño, se define un prefijo de expresión único y se proporcionan implementaciones personalizadas ExpressionBuilder y ExpressionEditor . Opcionalmente, puede proporcionar una implementación personalizada ExpressionEditorSheet que defina las propiedades que se usan para formar la expresión en el cuadro de diálogo expresiones.

El prefijo de expresión identifica el tipo de expresión personalizada y asocia una expresión con el generador de expresiones y el editor de expresiones. Cuando se analizan expresiones personalizadas en una página, el prefijo de expresión se usa para crear instancias de las clases y ExpressionEditor asociadasExpressionBuilder. Para asociar un prefijo de expresión con un generador de expresiones y un editor de expresiones, aplique los ExpressionEditorAttribute atributos y ExpressionPrefixAttribute a la clase personalizada ExpressionBuilder y configure el prefijo de expresión para un generador de expresiones en el expressionBuilders elemento del archivo de configuración web. El prefijo no es necesario, pero se recomienda encarecidamente.

Notas a los implementadores

Los pasos siguientes son necesarios para derivar una clase personalizada ExpressionEditor :

Por ejemplo, la ResourceExpressionEditor clase deriva de la ExpressionEditor clase y proporciona una implementación para evaluar y asociar una referencia de cadena de recursos con una propiedad de control en tiempo de diseño. La ResourceExpressionBuilder clase está asociada al prefijo Resources de expresión y a la ResourceExpressionEditor implementación. El GetExpressionEditorSheet(String, IServiceProvider) método devuelve un ResourceExpressionEditorSheetobjeto , que define las propiedades individuales que forman una expresión de referencia de recursos.

Constructores

ExpressionEditor()

Inicializa una nueva instancia de la clase ExpressionEditor.

Propiedades

ExpressionPrefix

Obtiene el prefijo de expresión que identifica las cadenas de expresión admitidas por la implementación del editor de expresiones.

Métodos

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
EvaluateExpression(String, Object, Type, IServiceProvider)

Evalúa una cadena de expresión y proporciona el valor en tiempo de diseño de una propiedad de control.

GetExpressionEditor(String, IServiceProvider)

Devuelve una implementación de ExpressionEditor que está asociada al prefijo de expresión especificado.

GetExpressionEditor(Type, IServiceProvider)

Devuelve una implementación de ExpressionEditor que está asociada al tipo de generador de expresiones especificado.

GetExpressionEditorSheet(String, IServiceProvider)

Devuelve una hoja del editor de expresiones que está asociada al actual editor de expresiones.

GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Se aplica a

Consulte también