Aracılığıyla paylaş


ExpressionBuilder Sınıf

Tanım

Sayfa ayrıştırma sırasında ifadeleri değerlendirir.

public ref class ExpressionBuilder abstract
public abstract class ExpressionBuilder
type ExpressionBuilder = class
Public MustInherit Class ExpressionBuilder
Devralma
ExpressionBuilder
Türetilmiş

Örnekler

Aşağıdaki kod örnekleri, soyut sınıfını uygulayarak özel ifade oluşturucusu ExpressionBuilder oluşturmayı göstermektedir. bu uygulaması ExpressionBuilder , ifadeye geçirilen bir değerlendirilmiş deyimi döndürür. Bu örneği çalıştırmak için önce özel ifade oluşturucusunu Web.config dosyasına kaydetmeniz gerekir. İlk kod örneği, özel ifade oluşturucunun Web.config dosyasına nasıl kaydedileceklerini gösterir.

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

İkinci kod örneği, bir .aspx dosyasında ifadeye nasıl başvurduğunu gösterir.

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

Üçüncü kod örneğinde, 'den türetilerek özelleştirilmiş ifade oluşturucunun nasıl geliştirileceği gösterilmektedir ExpressionBuilder. Bu kod örneğini çalıştırmak için sınıfını App_Code klasörüne yerleştirmeniz gerekir.

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; }
    }
}
Imports System.CodeDom
Imports System.Web.UI
Imports System.ComponentModel
Imports System.Web.Compilation
Imports System.Web.UI.Design

' Apply ExpressionEditorAttributes to allow the 
' expression to appear in the designer.
<ExpressionPrefix("MyCustomExpression")> _
<ExpressionEditor("MyCustomExpressionEditor")> _
Public Class MyExpressionBuilder
    Inherits ExpressionBuilder
    ' Create a method that will return the result 
    ' set for the expression argument.
    Public Shared Function GetEvalData(ByVal expression As String, _
       ByVal target As Type, ByVal entry As String) As Object
        Return expression
    End Function

    Public Overrides Function EvaluateExpression(ByVal target As Object, _
       ByVal entry As BoundPropertyEntry, ByVal parsedData As Object, _
       ByVal context As ExpressionBuilderContext) As Object
        Return GetEvalData(entry.Expression, target.GetType(), entry.Name)
    End Function

    Public Overrides Function GetCodeExpression(ByVal entry _
       As BoundPropertyEntry, ByVal parsedData As Object, ByVal context _
       As ExpressionBuilderContext) As CodeExpression
        Dim type1 As Type = entry.DeclaringType
        Dim descriptor1 As PropertyDescriptor = _
           TypeDescriptor.GetProperties(type1)(entry.PropertyInfo.Name)
        Dim expressionArray1(2) As CodeExpression
        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 _
           (MyBase.GetType()), "GetEvalData", expressionArray1))
    End Function

    Public Overrides ReadOnly Property SupportsEvaluate() As Boolean
        Get
            Return True
        End Get
    End Property
End Class

Açıklamalar

ExpressionBuilder sınıfı, sayfa ayrıştırma sırasında kod ifadeleri oluşturan sınıf gibi AppSettingsExpressionBuilder ifade oluşturucuları için temel sınıftır.

İfade oluşturucuları bildirim temelli ifadeleri ayrıştırır ve bir denetim özelliğine bağlı değerleri almak için kod oluşturur. Derleme olmayan senaryolarda, derleme yok özelliğini destekleyen bir ifade oluşturucusu, çalışma zamanında ifadeyi değerlendirir.

Sayfa ayrıştırıcısı dizesiyle sınırlandırılmış bir ifadeyle karşılaştığında, dizedeki <%$ %>öneki temel alarak ifade için bir ifade oluşturucusu oluşturur. Ön ek, dizenin iki nokta üst üste (:)) solundaki bölümüdür. Örneğin, ayrıştırıcı dizesiyle <%$ ConnectionStrings:MessageDB %>karşılaştığında bir ConnectionStringsExpressionBuilder nesnesi oluşturur. Ön ekler, bölümündeki Web.config dosyasındaki ifade oluşturucularıyla ilişkilendirilir ExpressionBuilders .

Bildirim temelli ifadenin sağ tarafı, değerlendirme için ifade oluşturucusna geçirilir. GetCodeExpression Sayfayla derlenecek kodu oluşturmak için yöntemini geçersiz kılın.

Özel ifade oluşturucusunun derlenmeyen sayfalarda etkin olmasını istiyorsanız, ifadenin EvaluateExpression sonuçlarını temsil eden bir nesne döndürmek için yöntemini de geçersiz kılmanız gerekir. Özel ifade oluşturucusunun SupportsEvaluate dersiz sayfaları desteklemediğini belirtmek için özelliğini de geçersiz kılmanız gerekir.

bir ifade düzenleyicisi uygulayarak tasarım zamanında denetim özelliğiyle ilişkili bir ifadeyi seçmek ve değerlendirmek için bir dizi özellik ve yöntem tanımlayabilirsiniz. Düzenleyici, sınıf düzeyinde meta veriler aracılığıyla ifade oluşturucusunun üzerinde işaretlenir. Daha fazla bilgi için bkz. ExpressionEditor.

Uygulayanlara Notlar

sınıfından ExpressionBuilder devraldığınızda yöntemini geçersiz kılmanız GetCodeExpression(BoundPropertyEntry, Object, ExpressionBuilderContext) gerekir.

Oluşturucular

ExpressionBuilder()

ExpressionBuilder sınıfının yeni bir örneğini başlatır.

Özellikler

SupportsEvaluate

Türetilmiş bir sınıfta geçersiz kılındığında, geçerli ExpressionBuilder nesnenin derlenmemiş sayfaları destekleyip desteklemediğini belirten bir değer döndürür.

Yöntemler

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
EvaluateExpression(Object, BoundPropertyEntry, Object, ExpressionBuilderContext)

Türetilmiş bir sınıfta geçersiz kılındığında, değerlendirilen bir ifadeyi temsil eden bir nesne döndürür.

GetCodeExpression(BoundPropertyEntry, Object, ExpressionBuilderContext)

Türetilmiş bir sınıfta geçersiz kılındığında, değerlendirilen ifadeyi almak için sayfa yürütme sırasında kullanılan kodu döndürür.

GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
ParseExpression(String, Type, ExpressionBuilderContext)

Türetilmiş bir sınıfta geçersiz kılındığında, ayrıştırılmış ifadeyi temsil eden bir nesne döndürür.

ToString()

Geçerli nesneyi temsil eden dizeyi döndürür.

(Devralındığı yer: Object)

Şunlara uygulanır

Ayrıca bkz.