Compartir a través de


Cómo: Ejecutar árboles de expresión (Visual Basic)

En este tema se muestra cómo ejecutar un árbol de expresiones. La ejecución de un árbol de expresión puede devolver un valor o simplemente realizar una acción como llamar a un método.

Solo se pueden ejecutar árboles de expresión que representan expresiones lambda. Los árboles de expresión que representan expresiones lambda son de tipo LambdaExpression o Expression<TDelegate>. Para ejecutar estos árboles de expresión, llame al Compile método para crear un delegado ejecutable y, a continuación, invoque el delegado.

Nota:

Si no se conoce el tipo del delegado, es decir, la expresión lambda es de tipo LambdaExpression y no Expression<TDelegate>, debe llamar al DynamicInvoke método en el delegado en lugar de invocarlo directamente.

Si un árbol de expresiones no representa una expresión lambda, puede crear una expresión lambda que tenga el árbol de expresiones original como su cuerpo llamando al Lambda<TDelegate>(Expression, IEnumerable<ParameterExpression>) método . A continuación, puede ejecutar la expresión lambda como se describió anteriormente en esta sección.

Ejemplo

En el ejemplo de código siguiente se muestra cómo ejecutar un árbol de expresión que representa la elevación de un número a una potencia mediante la creación de una expresión lambda y su ejecución. Se muestra el resultado, que representa el número elevado a la potencia.

' The expression tree to execute.  
Dim be As BinaryExpression = Expression.Power(Expression.Constant(2.0R), Expression.Constant(3.0R))  
  
' Create a lambda expression.  
Dim le As Expression(Of Func(Of Double)) = Expression.Lambda(Of Func(Of Double))(be)  
  
' Compile the lambda expression.  
Dim compiledExpression As Func(Of Double) = le.Compile()  
  
' Execute the lambda expression.  
Dim result As Double = compiledExpression()  
  
' Display the result.  
MsgBox(result)  
  
' This code produces the following output:  
' 8  

Compilación del código

  • Incluya el espacio de nombres System.Linq.Expressions.

Consulte también