Compartir por


ExpressionEditor Clase

Definición

Define un conjunto de propiedades y métodos para evaluar una expresión asociada a una propiedad de control en tiempo de diseño y para proporcionar una hoja del 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 del diseñador visual, como Visual Studio 2005, usa la ExpressionEditor clase para presentar hojas del 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 personalizadas 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 personalizadasExpressionBuilder.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 personalizado y asocia una expresión al generador de expresiones y al editor de expresiones. Cuando las expresiones personalizadas se analizan 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 a 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 elemento del expressionBuilders 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 ResourceExpressionEditorSheet, que define las propiedades individuales que forman una expresión de referencia de recursos.

Constructores

Nombre Description
ExpressionEditor()

Inicializa una nueva instancia de la clase ExpressionEditor.

Propiedades

Nombre Description
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

Nombre Description
Equals(Object)

Determina si el objeto especificado es igual al 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 ExpressionEditor implementación asociada al prefijo de expresión especificado.

GetExpressionEditor(Type, IServiceProvider)

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

GetExpressionEditorSheet(String, IServiceProvider)

Devuelve una hoja del editor de expresiones asociada al editor de expresiones actual.

GetHashCode()

Actúa como función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Objectactual.

(Heredado de Object)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Se aplica a

Consulte también