Como executar árvores de expressão (Visual Basic)

Este tópico mostra como executar uma árvore de expressão. Executar uma árvore de expressão pode retornar um valor ou apenas realizar uma ação, como chamar um método.

Somente árvores de expressão que representam expressões lambda podem ser executadas. Árvores de expressão que representam expressões lambda são do tipo LambdaExpression ou Expression<TDelegate>. Para executar essas árvores de expressão, chame o método Compile para criar um delegado executável e, em seguida, invoque o delegado.

Observação

Se o tipo de delegado não for conhecido, ou seja, a expressão lambda for do tipo LambdaExpression e não Expression<TDelegate>, você deverá chamar o método DynamicInvoke sobre o delegado em vez de invocá-la diretamente.

Se uma árvore de expressão não representa uma expressão lambda, você pode criar uma nova expressão lambda que tenha a árvore de expressão original como corpo, chamando o método Lambda<TDelegate>(Expression, IEnumerable<ParameterExpression>). Em seguida, você pode executar a expressão lambda como descrito anteriormente nesta seção.

Exemplo

O exemplo de código a seguir demonstra como executar uma árvore de expressão que representa a elevação de um número a uma potência, criando uma expressão lambda e executando-a. O resultado, representado pelo número elevado à potência, é exibido.

' 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  

Compilar o código

  • Inclua o namespace System.Linq.Expressions.

Confira também