通过


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 类的实例。 若要将表达式前缀与表达式生成器和表达式编辑器相关联,请将该 ExpressionEditorAttribute 表达式 ExpressionPrefixAttribute 前缀应用于自定义 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)

适用于

另请参阅