反射 - 获取lambda表达式中的方法调用列表

Mar*_*tin 5 .net c# reflection

我试图找到一种方法来获取C#3.5中lambda表达式内的方法调用列表.例如,在下面的代码中,我想方法LookAtThis(Action a)来分析lambda表达式的内容.换句话说,我希望LookAtThis返回Create的MethodInfo对象.

LookAtThis(() => Create(null, 0));
Run Code Online (Sandbox Code Playgroud)

可能吗?

谢谢!

Mar*_*ell 4

只要您使用Expression<Action>而不是 .这相当容易Action。有关完整代码,包括如何获取隐含的实际值,请参阅此处- 特别是ResolveMethod(以及如何使用它Invoke)。这是我在 protobuf-net 中使用的基于 lambda 进行 RPC 的代码。