Condividi tramite


ExpressionBuilder.GetCodeExpression Metodo

Definizione

Quando sottoposto a override in una classe derivata, restituisce il codice utilizzato durante l'esecuzione della pagina per ottenere l'espressione valutata.

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

Parametri

entry
BoundPropertyEntry

Oggetto che rappresenta le informazioni relative alla proprietà associata dall'espressione.

parsedData
Object

Oggetto contenente i dati analizzati restituiti dal metodo ParseExpression(String, Type, ExpressionBuilderContext).

context
ExpressionBuilderContext

Informazioni contestuali per la valutazione dell'espressione.

Restituisce

Oggetto CodeExpression utilizzato per l'assegnazione della proprietà.

Esempio

Nell'esempio di codice seguente viene illustrato come restituire un CodeExpression oggetto eseguendo l'override del GetCodeExpression metodo .

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

Commenti

Le classi che ereditano dalla ExpressionBuilder classe devono implementare il GetCodeExpression metodo astratto.

Note per gli implementatori

Se si implementa un generatore di espressioni personalizzato, è necessario eseguire il cast del tipo appropriato per la proprietà del controllo e restituire l'operazione cast nell'oggetto CodeExpression .

Si applica a