.NET Framework 4
 
其他版本
 
评价此主题
 

 

在分析页的过程中计算表达式。

 

命名空间:  System.Web.Compilation
程序集:  System.Web(在 System.Web.dll 中)
 
public abstract class ExpressionBuilder

ExpressionBuilder 类型公开以下成员。

  名称 说明
ExpressionBuilder ExpressionBuilder 类的新实例。
页首
  名称 说明
SupportsEvaluate ExpressionBuilder 对象是否支持非编译页。
页首
  名称 说明
Equals(Object) Object。)
EvaluateExpression 在派生类中重写时,会返回一个对象,该对象表示计算出的表达式。
Finalize Object。)
GetCodeExpression 在派生类中重写时,返回在页执行过程中用来获取计算出的表达式的代码。
GetHashCode Object。)
GetType Object。)
MemberwiseClone Object。)
ParseExpression 在派生类中重写时,会返回一个对象,该对象表示通过分析得到的表达式。
ToString Object。)
页首

AppSettingsExpressionBuilder 类)的基类。

在非编译方案中,支持非编译功能的表达式生成器在运行时计算表达式。

ExpressionBuilders 节中的表达式生成器相关联。

GetCodeExpression 方法可生成与页一起编译的代码。

SupportsEvaluate 属性,以指示自定义表达式生成器不支持非编译页。

ExpressionEditor

 

对继承者的说明

GetCodeExpression 方法。

第一个代码示例演示如何在 Web.config 文件中注册自定义表达式生成器。

 
 
<configuration>
    <system.web>
       <compilation>
          <expressionBuilders>
              <add expressionPrefix="MyCustomExpression"
               type="MyCustomExpressionBuilder"/>
          </expressionBuilders>
       </compilation>
    </system.web>
</configuration>

第二个代码示例演示如何在 .aspx 文件中引用表达式。

 
 
<asp:Label ID="Label1" runat="server" 
Text="<%$ MyCustomExpression:Hello, world! %>" />

若要运行此代码示例,必须将该类放入 App_Code 文件夹中。

 
using System;
using System.CodeDom;
using System.Web.UI;
using System.ComponentModel;
using System.Web.Compilation;
using System.Web.UI.Design;

// Apply ExpressionEditorAttributes to allow the 
// expression to appear in the designer.
[ExpressionPrefix("MyCustomExpression")]
[ExpressionEditor("MyCustomExpressionEditor")]
public class MyExpressionBuilder : ExpressionBuilder
{
    // Create a method that will return the result 
    // set for the expression argument.
    public static object GetEvalData(string expression, Type target, string entry)
    {
        return expression;
    }

    public override object EvaluateExpression(object target, BoundPropertyEntry entry, 
	object parsedData, ExpressionBuilderContext context)
    {
        return GetEvalData(entry.Expression, target.GetType(), entry.Name);
    }

    public override CodeExpression GetCodeExpression(BoundPropertyEntry entry, 
	object parsedData, ExpressionBuilderContext context)
    {
        Type type1 = entry.DeclaringType;
        PropertyDescriptor descriptor1 = TypeDescriptor.GetProperties(type1)[entry.PropertyInfo.Name];
        CodeExpression[] expressionArray1 = new CodeExpression[3];
        expressionArray1[0] = new CodePrimitiveExpression(entry.Expression.Trim());
        expressionArray1[1] = new CodeTypeOfExpression(type1);
        expressionArray1[2] = new CodePrimitiveExpression(entry.Name);
        return new CodeCastExpression(descriptor1.PropertyType, new CodeMethodInvokeExpression(new 
	   CodeTypeReferenceExpression(base.GetType()), "GetEvalData", expressionArray1));
    }

    public override bool SupportsEvaluate
    {
        get { return true; }
    }
}


.NET Framework

受以下版本支持:4、3.5、3.0、2.0

Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2

 

 

.NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求

相关文章:

  • 2021-10-05
  • 2021-09-06
  • 2021-08-09
  • 2021-05-26
  • 2022-02-08
  • 2021-11-08
  • 2021-08-27
猜你喜欢
  • 2021-11-23
  • 2021-12-01
  • 2021-06-06
  • 2022-03-07
  • 2021-10-08
  • 2022-01-28
相关资源
相似解决方案