相关疑难解决方法(0)

有没有办法在c#中获取对调用对象的引用?

我想知道的是,是否可以(例如)走向堆栈帧,检查每个调用对象以查看是否匹配接口,如果是,则从中提取一些数据.

是的,我知道这是不好的做法,我想知道是否有可能.

c# reflection

22
推荐指数
3
解决办法
2万
查看次数

如何获取堆栈帧的执行对象?

使用反射时,可以使用System.Diagnostics.StackTrace获取调用堆栈(除了它可以是由JIT优化引起的粗略近似)并检查包含的StackFrame对象.

如何获取对堆栈帧中的方法正在执行的对象(this-pointer)的引用?

我知道我可以通过在堆栈框架对象上调用GetMethod()来获取MethodBase,但我正在寻找的东西是GetObject()(如果方法是静态的,它会自然地返回null).看起来堆栈帧对象只能查询静态确定的信息,例如方法信息,原始文件等.

VS调试器知道(虽然它可能使用另一种获取调用堆栈跟踪的方法),因为可以双击调用堆栈窗口中的任何堆栈帧并查看本地和类字段的值.

编辑:澄清:我想要调用该方法的对象实例.即:如果在调用堆栈的某个地方的对象实例A上调用方法Foo(),并且它级联到我执行堆栈跟踪的方法,我想从我执行堆栈跟踪的位置获取对A的引用.(不是方法库的声明类型)

c# reflection stack-trace stack-frame

11
推荐指数
2
解决办法
5385
查看次数

标签 统计

c# ×2

reflection ×2

stack-frame ×1

stack-trace ×1