ExpressionEditor 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
定义一组属性和方法,用来计算设计时与控件属性关联的表达式,并向可视化设计宿主提供表达式编辑器表,以便在表达式编辑器对话框中使用。 此类为抽象类。
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 用于提示表达式对话框中的自定义表达式属性的实现。
通常,为了在设计时支持新的表达式类型,可以定义唯一的表达式前缀并提供自定义 ExpressionBuilder 和 ExpressionEditor 实现。 (可选)可以提供一个自定义 ExpressionEditorSheet 实现,用于定义用于在表达式对话框中形成表达式的属性。
表达式前缀标识自定义表达式类型,并将表达式与表达式生成器和表达式编辑器相关联。 在页面中分析自定义表达式时,表达式前缀用于创建关联 ExpressionBuilder 和 ExpressionEditor 类的实例。 若要将表达式前缀与表达式生成器和表达式编辑器相关联,请将和ExpressionPrefixAttribute属性应用于ExpressionEditorAttribute自定义ExpressionBuilder类,并在 Web 配置文件中的元素中expressionBuilders
为表达式生成器配置表达式前缀。 不需要前缀,但强烈建议使用前缀。
实施者说明
派生自定义 ExpressionEditor 类时需要执行以下步骤:
重写方法 EvaluateExpression(String, Object, Type, IServiceProvider) 以在设计时计算自定义表达式类型。
(可选)重写 GetExpressionEditorSheet(String, IServiceProvider) 该方法以返回一个自定义类,该类定义组合为形成自定义表达式的属性。
对 ExpressionEditorAttribute 类声明应用属性 ExpressionBuilder ,将自定义表达式生成器与派生表达式编辑器类相关联。
例如,该 ResourceExpressionEditor 类派生自 ExpressionEditor 该类,并提供一个实现,用于在设计时计算资源字符串引用与控件属性相关联。 类 ResourceExpressionBuilder 与表达式前缀 Resources
和 ResourceExpressionEditor 实现相关联。 该方法 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) |