C# 使用反射分析参数及其值

C# 使用反射分析参数及其值,c#,reflection,.net-3.5,.net-4.0,C#,Reflection,.net 3.5,.net 4.0,我在这里看到过一些比较老的帖子,大约有一年了,这意味着它们并没有真正涉及到.NET4或者甚至是3.5。这就来了 如果使用反射获取当前方法的参数 ParameterInfo[] methodParams = MethodInfo.GetCurrentMethod().GetParameters(); 循环遍历每个参数将允许您获取参数名,但是,由于.NET4中有新的动态参数,因此我猜只有一个“DefaultValue” 但是我的问题是,;如果不深入调试器API,是否仍然无法获取方法参数值 我知道如

我在这里看到过一些比较老的帖子,大约有一年了,这意味着它们并没有真正涉及到.NET4或者甚至是3.5。这就来了

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

ParameterInfo[] methodParams = MethodInfo.GetCurrentMethod().GetParameters();
循环遍历每个参数将允许您获取参数名,但是,由于.NET4中有新的动态参数,因此我猜只有一个“DefaultValue”

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


我知道如果你需要考虑这个问题,可能会有一个设计缺陷。

< P>不可能在不使用分析API的情况下获得当前的参数值。
MethodInfo
对象是每个方法,而不是每个调用。无法将
MethodInfo
与给定堆栈帧连接

此外,在发布版本中,可以优化参数局部变量,因此值不一定存在


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

这样做会造成巨大的性能损失吗?是否需要编译项目以进行调试?使用分析API获取值,而不是在发布模式下编译。感觉不值得这么做。没错,特别是因为应用程序无法自我评测,所以需要两个EXE文件。我想,不久前我回答了一个非常类似的问题:正如你所说,但并非没有设计缺陷。