You can use Lambda Expression Objects to represent a lambda as an expression.
How do you create a Lambda Expression Object representing a generic method call, if you only know the type -that you use for the generic method signature- at runtime?
For example:
I want to create a Lambda Expression Objects to call:
public static TSource Last<TSource>( this IEnumerable<TSource> source )
But I only know what TSource
is at runtime.
I don't fully understand the question, but the code that dtb wrote could be written simply as:
The code in the sample by dtb is pretty much the same thing as what the C# compiler automatically generates for you from this lambda expression (compiled as expression tree, because the return type is
Expression
).If you know the type at runtime, then you can either use the solution by dtb or you can invoke the
CreateLambda
method (above) using Reflection, which may be slower, but allows you to write the code in the lambda in the natural C#:The nice thing about this approach is that the code in
CreateLambda
can be much more complicated, which would be really hard to do using expression trees explicitly.or