ExpressionEditor 类

定义

定义一组属性和方法,用来计算设计时与控件属性关联的表达式,并向可视化设计宿主提供表达式编辑器表,以便在表达式编辑器对话框中使用。 此类为抽象类。

public ref class ExpressionEditor abstract
public abstract class ExpressionEditor
type ExpressionEditor = class
Public MustInherit Class ExpressionEditor
继承
ExpressionEditor
派生

示例

下面的代码示例演示如何从 ExpressionEditor 类派生以定义自定义表达式编辑器。

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

注解

可视化设计器主机(如 Visual Studio 2005)使用ExpressionEditor类向用户呈现自定义表达式编辑器工作表,然后计算所选表达式以供设计时呈现。

在设计时属性网格中浏览 Expressions 控件的属性时,视觉设计器将显示一个对话框来设置控件属性的表达式。 可以根据表达式前缀列表选择表达式类型。 从列表中选择表达式前缀时,视觉设计器使用关联的 ExpressionEditor 对象和 ExpressionEditorSheet 对象基于该类型的表达式语法来设置、计算和转换表达式字符串。 视觉对象设计器为关联的控件属性设置表达式,然后使用计算的表达式结果来分配设计图面上呈现的控件属性值。

静态 GetExpressionEditor 方法获取与特定表达式前缀或表达式生成器关联的表达式编辑器。 对象的 ExpressionPrefix 属性 ExpressionEditor 返回配置的表达式前缀。 该方法 EvaluateExpression 计算输入表达式字符串。 该方法 GetExpressionEditorSheet 返回 ExpressionEditorSheet 用于提示表达式对话框中的自定义表达式属性的实现。

通常,为了在设计时支持新的表达式类型,可以定义唯一的表达式前缀并提供自定义 ExpressionBuilderExpressionEditor 实现。 (可选)可以提供一个自定义 ExpressionEditorSheet 实现,用于定义用于在表达式对话框中形成表达式的属性。

表达式前缀标识自定义表达式类型,并将表达式与表达式生成器和表达式编辑器相关联。 在页面中分析自定义表达式时,表达式前缀用于创建关联 ExpressionBuilderExpressionEditor 类的实例。 若要将表达式前缀与表达式生成器和表达式编辑器相关联,请将和ExpressionPrefixAttribute属性应用于ExpressionEditorAttribute自定义ExpressionBuilder类,并在 Web 配置文件中的元素中expressionBuilders为表达式生成器配置表达式前缀。 不需要前缀,但强烈建议使用前缀。

实施者说明

派生自定义 ExpressionEditor 类时需要执行以下步骤:

例如,该 ResourceExpressionEditor 类派生自 ExpressionEditor 该类,并提供一个实现,用于在设计时计算资源字符串引用与控件属性相关联。 类 ResourceExpressionBuilder 与表达式前缀 ResourcesResourceExpressionEditor 实现相关联。 该方法 GetExpressionEditorSheet(String, IServiceProvider) 返回一个 ResourceExpressionEditorSheet,用于定义构成资源引用表达式的各个属性。

构造函数

ExpressionEditor()

初始化 ExpressionEditor 类的新实例。

属性

ExpressionPrefix

获取表达式前缀,该前缀标识受表达式编辑器实现支持的表达式字符串。

方法

Equals(Object)

确定指定对象是否等于当前对象。

(继承自 Object)
EvaluateExpression(String, Object, Type, IServiceProvider)

计算表达式字符串并提供控件属性的设计时值。

GetExpressionEditor(String, IServiceProvider)

返回一个与指定的表达式前缀相关联的 ExpressionEditor 实现。

GetExpressionEditor(Type, IServiceProvider)

返回一个与指定表达式生成器类型相关联的 ExpressionEditor 实现。

GetExpressionEditorSheet(String, IServiceProvider)

返回与当前表达式编辑器相关联的表达式编辑器表。

GetHashCode()

作为默认哈希函数。

(继承自 Object)
GetType()

获取当前实例的 Type

(继承自 Object)
MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
ToString()

返回表示当前对象的字符串。

(继承自 Object)

适用于

另请参阅