Udostępnij za pośrednictwem


ExpressionEditor Klasa

Definicja

Definiuje zestaw właściwości i metod do obliczania wyrażenia skojarzonego z właściwością kontrolki w czasie projektowania oraz w celu udostępnienia arkusza edytora wyrażeń hostowi projektu wizualnego do użycia w oknie dialogowym edytora wyrażeń. Ta klasa jest abstrakcyjna.

public ref class ExpressionEditor abstract
public abstract class ExpressionEditor
type ExpressionEditor = class
Public MustInherit Class ExpressionEditor
Dziedziczenie
ExpressionEditor
Pochodne

Przykłady

Poniższy przykład kodu pokazuje, jak pochodzić z klasy w ExpressionEditor celu zdefiniowania edytora wyrażeń niestandardowych.

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

Uwagi

Host projektanta wizualizacji, taki jak Visual Studio 2005, używa ExpressionEditor klasy do prezentowania niestandardowych arkuszy edytora wyrażeń użytkownikowi, a następnie oceny wybranego wyrażenia na potrzeby renderowania w czasie projektowania.

Podczas przeglądania Expressions właściwości kontrolki w siatce właściwości czasu projektowania projektant wizualizacji wyświetla okno dialogowe, aby ustawić wyrażenia dla właściwości kontrolki. Możesz wybrać typ wyrażenia na podstawie listy prefiksów wyrażeń. Po wybraniu prefiksu wyrażenia z listy projektant wizualizacji używa skojarzonych obiektów ExpressionEditor i ExpressionEditorSheet do ustawiania, oceniania i konwertowania ciągu wyrażenia na podstawie składni tego typu wyrażenia. Projektant wizualizacji ustawia wyrażenie dla skojarzonej właściwości kontrolki, a następnie używa wyniku obliczonego wyrażenia do przypisywania wartości właściwości kontrolki renderowanych na powierzchni projektowej.

Metody statyczne GetExpressionEditor pobierają edytor wyrażeń skojarzony z określonym prefiksem wyrażenia lub konstruktorem wyrażeń. Właściwość ExpressionPrefix obiektu ExpressionEditor zwraca skonfigurowany prefiks wyrażenia. Metoda EvaluateExpression oblicza ciąg wyrażenia wejściowego. Metoda GetExpressionEditorSheet zwraca implementację ExpressionEditorSheet , która jest używana do monitowania o właściwości wyrażenia niestandardowego w oknie dialogowym wyrażeń.

Zazwyczaj w celu obsługi nowego typu wyrażenia w czasie projektowania należy zdefiniować unikatowy prefiks wyrażenia i zapewnić niestandardowe ExpressionBuilder i ExpressionEditor implementacje. Opcjonalnie możesz podać niestandardową ExpressionEditorSheet implementację, która definiuje właściwości używane do tworzenia wyrażenia w oknie dialogowym wyrażeń.

Prefiks wyrażenia identyfikuje typ wyrażenia niestandardowego i kojarzy wyrażenie z konstruktorem wyrażeń i edytorem wyrażeń. Gdy wyrażenia niestandardowe są analizowane na stronie, prefiks wyrażenia jest używany do tworzenia wystąpień skojarzonych ExpressionBuilder klas i ExpressionEditor . Aby skojarzyć prefiks wyrażenia z konstruktorem wyrażeń i edytorem wyrażeń, zastosuj ExpressionEditorAttribute atrybuty i ExpressionPrefixAttribute do klasy niestandardowej ExpressionBuilder i skonfiguruj prefiks wyrażenia dla konstruktora wyrażeń w expressionBuilders elemecie w pliku konfiguracji sieci Web. Prefiks nie jest wymagany, ale zdecydowanie zalecany.

Uwagi dotyczące implementowania

W przypadku wyprowadzania klasy niestandardowej ExpressionEditor wymagane są następujące kroki:

— Opcjonalnie zastąpij GetExpressionEditorSheet(String, IServiceProvider) metodę, aby zwrócić klasę niestandardową, która definiuje właściwości połączone w celu utworzenia wyrażenia niestandardowego.

— Zastosuj atrybut w ExpressionEditorAttribute ExpressionBuilder deklaracji klasy, aby skojarzyć konstruktora wyrażeń niestandardowych z klasą edytora wyrażeń pochodnych.

Na przykład ResourceExpressionEditor klasa pochodzi z ExpressionEditor klasy i udostępnia implementację do obliczania i kojarzenia odwołania do ciągu zasobu z właściwością kontrolki w czasie projektowania. Klasa ResourceExpressionBuilder jest skojarzona z prefiksem Resources wyrażenia i implementacją ResourceExpressionEditor . Metoda GetExpressionEditorSheet(String, IServiceProvider) zwraca obiekt ResourceExpressionEditorSheet, który definiuje poszczególne właściwości, które tworzą wyrażenie odwołania do zasobu.

Konstruktory

ExpressionEditor()

Inicjuje nowe wystąpienie klasy ExpressionEditor.

Właściwości

ExpressionPrefix

Pobiera prefiks wyrażenia, który identyfikuje ciągi wyrażeń obsługiwane przez implementację edytora wyrażeń.

Metody

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
EvaluateExpression(String, Object, Type, IServiceProvider)

Oblicza ciąg wyrażenia i udostępnia wartość czasu projektowania właściwości kontrolki.

GetExpressionEditor(String, IServiceProvider)

Zwraca implementację ExpressionEditor skojarzona z prefiksem określonego wyrażenia.

GetExpressionEditor(Type, IServiceProvider)

Zwraca implementację ExpressionEditor skojarzona z określonym typem konstruktora wyrażeń.

GetExpressionEditorSheet(String, IServiceProvider)

Zwraca arkusz edytora wyrażeń skojarzony z bieżącym edytorem wyrażeń.

GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Dotyczy

Zobacz też