ExpressionBuilder Klasse

Definition

Wertet während der Seitenanalyse Ausdrücke aus.Evaluates expressions during page parsing.

public ref class ExpressionBuilder abstract
public abstract class ExpressionBuilder
type ExpressionBuilder = class
Public MustInherit Class ExpressionBuilder
Vererbung
ExpressionBuilder
Abgeleitet

Beispiele

Die folgenden Codebeispiele veranschaulichen, wie Sie einen benutzerdefinierten Ausdrucks-Generator erstellen ExpressionBuilder , indem Sie die abstrakte-Klasse implementieren.The following code examples demonstrate how to build a custom expression builder by implementing the ExpressionBuilder abstract class. Diese Implementierung von ExpressionBuilder gibt eine ausgewertete Anweisung zurück, die an den-Ausdruck übermittelt wird.This implementation of ExpressionBuilder returns an evaluated statement that is passed to the expression. Um dieses Beispiel ausführen zu können, müssen Sie zuerst den benutzerdefinierten Ausdrucks-Generator in der Datei "Web. config" registrieren.To run this example, you must first register the custom expression builder in the Web.config file. Im ersten Codebeispiel wird veranschaulicht, wie der benutzerdefinierte Ausdrucks-Generator in der Datei "Web. config" registriert wird.The first code example demonstrates how to register the custom expression builder in the Web.config file.

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

Im zweiten Codebeispiel wird veranschaulicht, wie auf den Ausdruck in einer ASPX-Datei verwiesen wird.The second code example demonstrates how to reference the expression in an .aspx file.

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

Im dritten Codebeispiel wird veranschaulicht, wie ein angepasster Ausdrucks-Generator ExpressionBuilderentwickelt wird, indem von abgeleitet wird.The third code example demonstrates how to develop a customized expression builder by deriving from ExpressionBuilder. Zum Ausführen dieses Code Beispiels müssen Sie die-Klasse im Ordner "App_Code" platzieren.To run this code example, you must place the class in the App_Code folder.

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

Hinweise

Die ExpressionBuilder -Klasse ist die Basisklasse für Ausdrucks-Generatoren, wie AppSettingsExpressionBuilder z. b. die-Klasse, die während der Seiten Verarbeitung Code Ausdrücke erstellen.The ExpressionBuilder class is the base class for expression builders, such as the AppSettingsExpressionBuilder class, that create code expressions during page parsing.

Ausdrucks-Generatoren analysieren deklarative Ausdrücke und erstellen Code zum Abrufen von Werten, die an eine Steuerelement Eigenschaft gebunden sind.Expression builders parse declarative expressions and create code to retrieve values bound to a control property. In Szenarien ohne Kompilierung wertet ein Ausdrucks-Generator, der eine Funktion ohne Kompilierung unterstützt, den Ausdruck zur Laufzeit aus.In no-compile scenarios, an expression builder that supports a no-compile feature evaluates the expression during run time.

Wenn der Seiten Parser auf einen Ausdruck stößt, der durch die Zeichenfolge <%$ %>getrennt ist, erstellt er basierend auf dem Präfix in der Zeichenfolge einen Ausdrucks-Generator für den Ausdruck.When the page parser encounters an expression that is delimited with the string <%$ %>, it creates an expression builder for the expression based on the prefix in the string. Das Präfix ist der Teil der Zeichenfolge links neben dem Doppelpunkt (:).The prefix is the portion of the string that is to the left of the colon (:). Wenn der Parser beispielsweise auf die Zeichenfolge <%$ ConnectionStrings:MessageDB %>trifft, wird ein ConnectionStringsExpressionBuilder -Objekt erstellt.For example, when the parser encounters the string <%$ ConnectionStrings:MessageDB %>, it creates a ConnectionStringsExpressionBuilder object. Präfixe werden Ausdrucks-Generatoren in der Datei "Web. config" im ExpressionBuilders Abschnitt zugeordnet.Prefixes are associated with expression builders in the Web.config file in the ExpressionBuilders section.

Die Rechte Seite des deklarativen Ausdrucks wird zur Auswertung an den Ausdrucks-Generator übermittelt.The right side of the declarative expression is passed to the expression builder for evaluation. Überschreiben GetCodeExpression Sie die-Methode, um Code zu generieren, der mit der Seite kompiliert wird.Override the GetCodeExpression method to generate code that will be compiled with the page.

Wenn Sie möchten, dass der benutzerdefinierte Ausdrucks-Generator auf nicht kompilierten Seiten aktiv ist, müssen Sie auch EvaluateExpression die-Methode überschreiben, um ein Objekt zurückzugeben, das die Ergebnisse des Ausdrucks darstellt.If you want the custom expression builder to be active on pages that are not compiled, you must also override the EvaluateExpression method to return an object that represents the results of the expression. Außerdem müssen Sie die SupportsEvaluate -Eigenschaft überschreiben, um anzugeben, dass der benutzerdefinierte Ausdrucks-Generator keine Kompilierungs Seiten unterstützt.You also must override the SupportsEvaluate property to indicate that the custom expression builder does support no-compile pages.

Sie können einen Satz von Eigenschaften und Methoden zum auswählen und Auswerten eines Ausdrucks definieren, der zur Entwurfszeit einer Steuerelement Eigenschaft zugeordnet ist, indem Sie einen Ausdrucks-Editor implementieren.You can define a set of properties and methods for selecting and evaluating an expression that is associated with a control property at design time by implementing an expression editor. Der Editor wird im Ausdrucks-Generator durch Metadaten auf Klassenebene gekennzeichnet.The editor is marked on the expression builder through class-level metadata. Weitere Informationen finden Sie unter ExpressionEditor.For more information, see ExpressionEditor.

Hinweise für Ausführende

Wenn Sie von der ExpressionBuilder -Klasse erben, müssen Sie die GetCodeExpression(BoundPropertyEntry, Object, ExpressionBuilderContext) -Methode überschreiben.When you inherit from the ExpressionBuilder class, you must override the GetCodeExpression(BoundPropertyEntry, Object, ExpressionBuilderContext) method.

Konstruktoren

ExpressionBuilder()

Initialisiert eine neue Instanz der ExpressionBuilder-Klasse.Initializes a new instance of the ExpressionBuilder class.

Eigenschaften

SupportsEvaluate

Gibt nach dem Überschreiben in einer abgeleiteten Klasse einen Wert zurück, der angibt, ob das aktuelle ExpressionBuilder-Objekt nicht kompilierte Seiten unterstützt.When overridden in a derived class, returns a value indicating whether the current ExpressionBuilder object supports no-compile pages.

Methoden

Equals(Object)

Ermittelt, ob das angegebene Objekt und das aktuelle Objekt gleich sind.Determines whether the specified object is equal to the current object.

(Geerbt von Object)
EvaluateExpression(Object, BoundPropertyEntry, Object, ExpressionBuilderContext)

Gibt nach dem Überschreiben in einer abgeleiteten Klasse ein Objekt zurück, das einen ausgewerteten Ausdruck darstellt.When overridden in a derived class, returns an object that represents an evaluated expression.

GetCodeExpression(BoundPropertyEntry, Object, ExpressionBuilderContext)

Gibt nach dem Überschreiben in einer abgeleiteten Klasse Code zurück, mit dem während der Seitenausführung der ausgewertete Ausdruck abgerufen wird.When overridden in a derived class, returns code that is used during page execution to obtain the evaluated expression.

GetHashCode()

Dient als die Standard-HashfunktionServes as the default hash function.

(Geerbt von Object)
GetType()

Ruft den Type der aktuellen Instanz ab.Gets the Type of the current instance.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.Creates a shallow copy of the current Object.

(Geerbt von Object)
ParseExpression(String, Type, ExpressionBuilderContext)

Gibt nach dem Überschreiben in einer abgeleiteten Klasse ein Objekt zurück, das den analysierten Ausdruck darstellt.When overridden in a derived class, returns an object that represents the parsed expression.

ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.Returns a string that represents the current object.

(Geerbt von Object)

Gilt für:

Siehe auch