Compartir a través de


ExpressionBuilder.GetCodeExpression Método

Definición

Cuando se reemplaza en una clase derivada, devuelve código que se utiliza durante la ejecución de la página para obtener la expresión evaluada.

public:
 abstract System::CodeDom::CodeExpression ^ GetCodeExpression(System::Web::UI::BoundPropertyEntry ^ entry, System::Object ^ parsedData, System::Web::Compilation::ExpressionBuilderContext ^ context);
public abstract System.CodeDom.CodeExpression GetCodeExpression (System.Web.UI.BoundPropertyEntry entry, object parsedData, System.Web.Compilation.ExpressionBuilderContext context);
abstract member GetCodeExpression : System.Web.UI.BoundPropertyEntry * obj * System.Web.Compilation.ExpressionBuilderContext -> System.CodeDom.CodeExpression
Public MustOverride Function GetCodeExpression (entry As BoundPropertyEntry, parsedData As Object, context As ExpressionBuilderContext) As CodeExpression

Parámetros

entry
BoundPropertyEntry

Objeto que representa la información sobre la propiedad con la que se establece el enlace mediante la expresión.

parsedData
Object

Objeto que contiene los datos analizados devuelto por ParseExpression(String, Type, ExpressionBuilderContext).

context
ExpressionBuilderContext

Información de contexto para la evaluación de la expresión.

Devoluciones

CodeExpression utilizado para la asignación de propiedad.

Ejemplos

En el ejemplo de código siguiente se muestra cómo devolver un CodeExpression objeto reemplazando el GetCodeExpression método .

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 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

Comentarios

Las clases que heredan de la ExpressionBuilder clase deben implementar el GetCodeExpression método abstracto.

Notas a los implementadores

Si implementa un generador de expresiones personalizado, debe realizar la conversión de tipos adecuada para la propiedad de control y devolver la operación de conversión en el CodeExpression objeto .

Se aplica a