我可以通过StackTrace获取有关参数的信息,使用类似的方法:
catch (Exception ex)
{
var st = new StackTrace(ex);
System.Reflection.ParameterInfo pi = st.GetFrame(0).GetMethod().GetParameters().First();
}
Run Code Online (Sandbox Code Playgroud)
我想知道我如何获得参数的值.例:
如果我在堆栈跟踪中的方法是这样的:
void MyMethod(object value)
Run Code Online (Sandbox Code Playgroud)
电话就像:
MyMethod(10);
Run Code Online (Sandbox Code Playgroud)
我想得到价值10.我怎么做?
我在谈论托管的.NET代码.如果我们运行任何程序并将VS附加到它,我们可以看到调用堆栈中每个方法的参数值.我想创建一个日志记录解决方案,它将记录调用堆栈中每个方法的所有参数值.实际上我需要这个信息,以防发生异常.
我知道可以通过分析API来实现.但我想知道只有托管代码才有可能吗?
更新:好的,可能使用纯.NET,这是不可能的.然后可能有某种非托管代码......重点是从应用程序本身内部执行此操作.在异常的情况下,应用程序可以调用某个库(可能是非托管的),它返回有关调用堆栈中方法值的信息.只是想一想......