使用Reflection分析参数及其值

时间:2010-01-27 13:58:30

标签: c# reflection .net-3.5 .net-4.0

我在SO上看到了较旧的帖子,大约一岁,这意味着他们并没有真正涵盖.NET 4,甚至可能只涉及3.5。所以这里。

如果您使用反射来获取当前方法的参数

ParameterInfo[] methodParams = MethodInfo.GetCurrentMethod().GetParameters();

循环遍历每个参数将允许您获取参数名称,但是,由于.NET 4中的新动态参数,我认为只有“DefaultValue”。

然而,我的问题是;如果不深入调试器API,仍然无法获取方法参数值吗?

我知道如果您甚至需要考虑使用它,可能存在设计缺陷。

1 个答案:

答案 0 :(得分:3)

如果不使用Profiling API,则无法获取当前参数值。

MethodInfo个对象是按方法,而不是每次调用。无法将MethodInfo与给定的堆栈帧连接。

此外,在发布版本中,参数本地可以进行优化,因此值不一定存在

DefaultValue属性在VB参数中可以是非null,它已经支持默认值。