c# - 使用反射来分析参数及其值

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

我在这里看到过关于 SO 的旧帖子,大约一年了,这意味着它们并没有真正涵盖该主题的 .NET 4 甚至 3.5。所以就这样吧。

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

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

循环访问每个参数将让您获取参数名称,但是,只有一个“DefaultValue”,我猜它是因为 .NET 4 中新的动态参数而存在的。

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

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

最佳答案

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

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

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

VB 参数中的 DefaultValue 属性可以为非 null,VB 参数已支持默认值。

关于c# - 使用反射来分析参数及其值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2147368/

相关文章:

c# - bool 作为 CheckBox 的数据源(Bool 在另一个线程中更新而不是它正在影响的线程)

c# - 在 C# : "...could not find the object..." 中从 Excel 读取错误

c# - 操作超时和 (504) 网关超时之间的区别

C#:使用别名 using 指令无法访问扩展方法

c# - c#中反射中的SetValue

c# - 不使用 XmlInclude 进行序列化

c# - 反射将 css 类添加到 body 标记 c#

c# - 为什么 JsonElement 是 struct 类型?

c# - 缓存 ASP.NET AJAX 服务 javascript 代理

.Net 3.5,在进程之间传递字符串的最安全方式