Sdílet prostřednictvím


ExpressionEditor Třída

Definice

Definuje sadu vlastností a metod pro vyhodnocení výrazu přidruženého k vlastnosti ovládacího prvku v době návrhu a poskytnutí listu editoru výrazů hostiteli vizuálního návrhu pro použití v dialogovém okně editoru výrazů. Tato třída je abstraktní.

public ref class ExpressionEditor abstract
public abstract class ExpressionEditor
type ExpressionEditor = class
Public MustInherit Class ExpressionEditor
Dědičnost
ExpressionEditor
Odvozené

Příklady

Následující příklad kódu ukazuje, jak odvozovat z ExpressionEditor třídy k definování vlastního editoru výrazů.

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

Poznámky

Hostitel vizuálního návrháře, například Visual Studio 2005, používá ExpressionEditor třídu k prezentaci listů editoru vlastních výrazů uživateli a následně vyhodnotí vybraný výraz pro vykreslování v době návrhu.

Při procházení vlastnosti ovládacího prvku v mřížce vlastností návrhu Expressions zobrazí návrhář vizuálu dialogové okno pro nastavení výrazů pro vlastnost ovládacího prvku. Typ výrazu můžete vybrat na základě seznamu předpon výrazů. Když vyberete předponu výrazu ze seznamu, návrhář vizuálu použije přidružené ExpressionEditor ExpressionEditorSheet objekty k nastavení, vyhodnocení a převodu řetězce výrazu na základě syntaxe daného typu výrazu. Vizuální návrhář nastaví výraz pro přidruženou vlastnost ovládacího prvku a pak použije výsledek vyhodnoceného výrazu k přiřazení hodnot vlastností ovládacího prvku, které se vykreslují na návrhové ploše.

Statické GetExpressionEditor metody získávají editor výrazů, který je přidružený k určité předponě výrazu nebo tvůrci výrazů. Vlastnost ExpressionPrefix objektu ExpressionEditor vrátí nakonfigurovanou předponu výrazu. Metoda EvaluateExpression vyhodnotí řetězec vstupního výrazu. Metoda GetExpressionEditorSheet vrátí implementaci ExpressionEditorSheet , která se používá k zobrazení výzvy k zadání vlastností vlastního výrazu v dialogovém okně výrazy.

Obvykle pro podporu nového typu výrazu v době návrhu definujete jedinečnou předponu výrazu a poskytujete vlastní ExpressionBuilder a ExpressionEditor implementace. Volitelně můžete zadat vlastní ExpressionEditorSheet implementaci, která definuje vlastnosti, které se používají k vytvoření výrazu v dialogovém okně výrazů.

Předpona výrazu identifikuje typ vlastního výrazu a přidruží výraz k tvůrci výrazů a editoru výrazů. Když se vlastní výrazy analyzují na stránce, použije se předpona výrazu k vytvoření instancí přidružených ExpressionBuilder a ExpressionEditor tříd. Pokud chcete přidružit předponu výrazu k tvůrci výrazů a editoru výrazů, použijte ExpressionEditorAttribute u vlastní ExpressionBuilder třídy a ExpressionPrefixAttribute nakonfigurujte předponu výrazu pro tvůrce výrazů v elementu expressionBuilders v konfiguračním souboru webu. Předpona není povinná, ale důrazně se doporučuje.

Poznámky pro implementátory

Při odvození vlastní ExpressionEditor třídy jsou vyžadovány následující kroky:

Třída je například ResourceExpressionEditor odvozena od ExpressionEditor třídy a poskytuje implementaci pro vyhodnocení a přidružení odkazu na řetězec prostředku s vlastností ovládacího prvku v době návrhu. Třída ResourceExpressionBuilder je přidružena k předponě Resources výrazu a implementaci ResourceExpressionEditor . Metoda GetExpressionEditorSheet(String, IServiceProvider) vrátí ResourceExpressionEditorSheethodnotu , která definuje jednotlivé vlastnosti, které tvoří referenční výraz prostředku.

Konstruktory

ExpressionEditor()

Inicializuje novou instanci ExpressionEditor třídy.

Vlastnosti

ExpressionPrefix

Získá předponu výrazu, která identifikuje řetězce výrazů podporované implementací editoru výrazů.

Metody

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
EvaluateExpression(String, Object, Type, IServiceProvider)

Vyhodnotí řetězec výrazu a poskytuje hodnotu času návrhu pro vlastnost ovládacího prvku.

GetExpressionEditor(String, IServiceProvider)

Vrátí implementaci ExpressionEditor přidruženou k zadané předponě výrazu.

GetExpressionEditor(Type, IServiceProvider)

Vrátí implementaci ExpressionEditor přidruženou k zadanému typu tvůrce výrazů.

GetExpressionEditorSheet(String, IServiceProvider)

Vrátí list editoru výrazů přidružený k aktuálnímu editoru výrazů.

GetHashCode()

Slouží jako výchozí funkce hash.

(Zděděno od Object)
GetType()

Type Získá aktuální instanci.

(Zděděno od Object)
MemberwiseClone()

Vytvoří použádnou kopii aktuálního souboru Object.

(Zděděno od Object)
ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Platí pro

Viz také