Partilhar via


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

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

Somente árvores de expressão que representam expressões lambda podem ser executadas. As á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 Compile método para criar um delegado executável e, em seguida, invoque o delegado.

Nota

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

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

Exemplo

O exemplo de código a seguir demonstra como executar uma árvore de expressão que representa elevar um número a uma potência criando uma expressão lambda e executando-a. O resultado, que representa o 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.

Consulte também