I am trying to find a way to get the list of method calls inside a lambda expression in C# 3.5. For instance, in the code below, I would like to method LookAtThis(Action a) to analyze the content of the lambda expression. In other words, I want LookAtThis to return me the MethodInfo object of Create.
LookAtThis(() => Create(null, 0));
Is it possible?
This is fairly easy as long as you use
Expression<Action> instead of
Action. For full code, including how to get the actual values implied, see here - in particular
ResolveMethod (and how it is used by
Invoke). This is the code I use in protobuf-net to do RPC based on lambdas.