Sdílet prostřednictvím


ExpressionEditor Třída

Definice

Definuje sadu vlastností a metod pro vyhodnocení výrazu, který je přidružen 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 odvodit z ExpressionEditor třídy definovat vlastní editor 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.

Když procházíte Expressions vlastnost ovládacího prvku v mřížce vlastností návrhu, vizuální návrhář zobrazí 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ž ze seznamu vyberete předponu výrazu, návrhář vizuálu použije přidružené ExpressionEditor objekty ExpressionEditorSheet 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é jsou vykresleny 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 pro ExpressionEditor objekt 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.

Pro podporu nového typu výrazu v době návrhu obvykle 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ýrazy.

Předpona výrazu identifikuje typ vlastního výrazu a přidruží výraz k tvůrci výrazů a editoru výrazů. Při analýze vlastních výrazů na stránce se k vytvoření instancí přidružených ExpressionBuilder a ExpressionEditor tříd používá předpona výrazu. Pokud chcete přidružit předponu výrazu k tvůrci výrazů a editoru výrazůExpressionBuilder, použijte ExpressionEditorAttribute vlastní třídu a ExpressionPrefixAttribute nakonfigurujte předponu výrazu pro tvůrce výrazů v elementu v expressionBuilders 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 z ExpressionEditor třídy a poskytuje implementaci pro vyhodnocení a přidružení odkazu řetězce prostředku k vlastnosti 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í ResourceExpressionEditorSheet, který definuje jednotlivé vlastnosti, které tvoří referenční výraz prostředku.

Konstruktory

Name Description
ExpressionEditor()

Inicializuje novou instanci ExpressionEditor třídy.

Vlastnosti

Name Description
ExpressionPrefix

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

Metody

Name Description
Equals(Object)

Určuje, zda je zadaný objekt roven aktuálnímu objektu.

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

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

GetExpressionEditor(String, IServiceProvider)

Vrátí implementaci ExpressionEditor přidruženou k předponě zadaného 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()

Získá Type aktuální instance.

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

Vytvoří mělkou kopii aktuálního 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é