Postupy: Provádění stromů výrazů (Visual Basic)

V tomto tématu se dozvíte, jak spustit strom výrazů. Spuštění stromu výrazů může vrátit hodnotu, nebo může provést pouze akci, jako je volání metody.

Lze spustit pouze stromy výrazů, které představují výrazy lambda. Stromy výrazů, které představují výrazy lambda, jsou typu LambdaExpression nebo Expression<TDelegate>. Chcete-li tyto stromy výrazů spustit, zavolejte metodu Compile pro vytvoření spustitelného delegáta a pak vyvoláte delegáta.

Poznámka:

Pokud typ delegáta není známý, to znamená, že výraz lambda je typu LambdaExpression , a ne Expression<TDelegate>, musíte volat metodu DynamicInvoke na delegátu místo jeho přímého vyvolání.

Pokud strom výrazu nepředstavuje výraz lambda, můžete vytvořit nový výraz lambda, který má původní strom výrazu jako jeho tělo, voláním Lambda<TDelegate>(Expression, IEnumerable<ParameterExpression>) metody. Potom můžete výraz lambda spustit, jak je popsáno výše v této části.

Příklad

Následující příklad kódu ukazuje, jak spustit strom výrazu, který představuje zvýšení čísla na mocninu vytvořením výrazu lambda a jeho spuštěním. Zobrazí se výsledek, který představuje číslo umocněné na mocninu.

' 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  

Kompilace kódu

  • Zahrňte obor názvů System.Linq.Expressions.

Viz také