Compartilhar via


ExpressionEditor Classe

Definição

Define um conjunto de propriedades e métodos para avaliar uma expressão que é associada a uma propriedade de controle em tempo de design e fornecer uma folha do editor de expressões para o host de design visual usar na caixa de diálogo do editor de expressões. Esta classe é abstrata.

public ref class ExpressionEditor abstract
public abstract class ExpressionEditor
type ExpressionEditor = class
Public MustInherit Class ExpressionEditor
Herança
ExpressionEditor
Derivado

Exemplos

O exemplo de código a seguir demonstra como derivar da ExpressionEditor classe para definir um editor de expressões personalizadas.

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

Comentários

Um host de designer visual, como Visual Studio 2005, usa a ExpressionEditor classe para apresentar folhas de editor de expressões personalizadas ao usuário e, em seguida, avaliar a expressão selecionada para renderização em tempo de design.

Quando você procura um Expressions controle na grade propriedades de tempo de design, o designer visual exibe uma caixa de diálogo para definir expressões para uma propriedade de controle. Você pode selecionar o tipo de expressão com base em uma lista de prefixos de expressão. Quando você seleciona um prefixo de expressão na lista, o designer visual usa os objetos e ExpressionEditorSheet associados ExpressionEditor para definir, avaliar e converter a cadeia de caracteres de expressão com base na sintaxe desse tipo de expressão. O designer visual define a expressão para a propriedade de controle associada e usa o resultado da expressão avaliada para atribuir valores de propriedade de controle que são renderizados na superfície de design.

Os métodos estáticos GetExpressionEditor obtêm o editor de expressões associado a um determinado prefixo de expressão ou construtor de expressões. A ExpressionPrefix propriedade de um ExpressionEditor objeto retorna o prefixo de expressão configurado. O EvaluateExpression método avalia uma cadeia de caracteres de expressão de entrada. O GetExpressionEditorSheet método retorna a ExpressionEditorSheet implementação usada para solicitar as propriedades da expressão personalizada na caixa de diálogo expressões.

Normalmente, para dar suporte a um novo tipo de expressão no momento do design, você define um prefixo de expressão exclusiva e fornece implementações e ExpressionEditor personalizadasExpressionBuilder. Opcionalmente, você pode fornecer uma implementação personalizada ExpressionEditorSheet que define propriedades que são usadas para formar a expressão na caixa de diálogo expressões.

O prefixo de expressão identifica o tipo de expressão personalizada e associa uma expressão ao construtor de expressões e ao editor de expressões. Quando expressões personalizadas são analisadas em uma página, o prefixo de expressão é usado para criar instâncias das classes e ExpressionEditor associadasExpressionBuilder. Para associar um prefixo de expressão a um construtor de expressões e editor de expressões, aplique os ExpressionEditorAttribute atributos e ExpressionPrefixAttribute a classe personalizada ExpressionBuilder e configure o prefixo de expressão para um construtor de expressões no expressionBuilders elemento no arquivo de configuração da Web. O prefixo não é necessário, mas altamente recomendado.

Notas aos Implementadores

As seguintes etapas são necessárias para derivar uma classe personalizada ExpressionEditor :

Por exemplo, a ResourceExpressionEditor classe deriva da ExpressionEditor classe e fornece uma implementação para avaliar e associar uma referência de cadeia de caracteres de recurso a uma propriedade de controle em tempo de design. A ResourceExpressionBuilder classe está associada ao prefixo Resources de expressão e à ResourceExpressionEditor implementação. O GetExpressionEditorSheet(String, IServiceProvider) método retorna uma ResourceExpressionEditorSheet, que define as propriedades individuais que formam uma expressão de referência de recurso.

Construtores

ExpressionEditor()

Inicializa uma nova instância da classe ExpressionEditor.

Propriedades

ExpressionPrefix

Obtém o prefixo de expressão que identifica as cadeias de caracteres de expressão com suporte na implementação do editor de expressão.

Métodos

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

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

Avalia uma cadeia de caracteres de expressão e fornece o valor de tempo de design para uma propriedade de controle.

GetExpressionEditor(String, IServiceProvider)

Retorna uma implementação ExpressionEditor associada ao prefixo de expressão especificado.

GetExpressionEditor(Type, IServiceProvider)

Retorna uma implementação ExpressionEditor associada ao tipo de construtor de expressões especificado.

GetExpressionEditorSheet(String, IServiceProvider)

Retorna uma folha do editor de expressão que está associada ao editor de expressão atual.

GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Aplica-se a

Confira também