如何在堆栈中获取被调用的函数的参数的值

limeng315 2009-10-23 10:49:37
我使用StackFrame获取到当前的调用的方法和方法的参数列表, 请问如何能继续获取到各个参数的值?
...全文
300 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
limeng315 2009-10-26
  • 打赏
  • 举报
回复
顶起来,看今天有没有收获.
lerit 2009-10-23
  • 打赏
  • 举报
回复
恩,好题!思考中
yangqizhong 2009-10-23
  • 打赏
  • 举报
回复
别沉啊,关注中
limeng315 2009-10-23
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 l171147904 的回复:]
你在 NEW A 的 时候,,带参数过去 不行吗?
给A 写个 构造函数

public A(string a,string b)  //a:谁在调用  b:参数值
[/Quote]

首先我需要得到的是谁在调用A中的方法Fa, 不是谁new了A
其次, 调用A.Fa的类B在实际中有几百个,我不可能去修改所有的class B
所以我能想到的方法只能是打堆栈的注意, 期待高手高手高高手的出现......
l171147904 2009-10-23
  • 打赏
  • 举报
回复
你在 NEW A 的 时候,,带参数过去 不行吗?
给A 写个 构造函数

public A(string a,string b) //a:谁在调用 b:参数值
limeng315 2009-10-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 dobzhansky 的回复:]
这个问题很早以前出现过一次,
嘿嘿, 直接拿值不行么?
[/Quote]
实际上我要解决的问题是我在class A中有一个公共方法Fa, 其它引用了这个类的类,比如class B, 这里面有函数 Fb调用了A.Fa, 我现在需要在Fa中知道谁在调用我以及调用我的函数它的参数值是多少.

不知道我有没有说清楚这个问题, 头疼了一天了.
Dobzhansky 2009-10-23
  • 打赏
  • 举报
回复
这个问题很早以前出现过一次,
嘿嘿, 直接拿值不行么?
limeng315 2009-10-23
  • 打赏
  • 举报
回复
自己顶起来
lerit 2009-10-23
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 lzhdim 的回复:]
栈在调用函数时会复制参数副本到栈中(值类型到栈中,引用类型在栈和托管堆都有)。这些都受CLR控制。而方法的调用,会在CLR的运行栈中记录下来。其实就象程序出错时你看到的那个调用顺序(Web)。因为windows的机制是基于消息驱动的。.NET中的stack类保存了一些信息。但是你要找出参数,首先需要知道它在栈中的某个位置。但是,从你的说明中,调用A的B有多个,那么这个可能你的调用A的会比较多,所以¡­
[/Quote]
学习了!
limeng315 2009-10-23
  • 打赏
  • 举报
回复
没有人知道吗???
lzhdim 2009-10-23
  • 打赏
  • 举报
回复
栈在调用函数时会复制参数副本到栈中(值类型到栈中,引用类型在栈和托管堆都有)。这些都受CLR控制。而方法的调用,会在CLR的运行栈中记录下来。其实就象程序出错时你看到的那个调用顺序(Web)。因为windows的机制是基于消息驱动的。.NET中的stack类保存了一些信息。但是你要找出参数,首先需要知道它在栈中的某个位置。但是,从你的说明中,调用A的B有多个,那么这个可能你的调用A的会比较多,所以这个栈中的参数会不同。具体如何在栈中取到调用的对象信息,这个我目前不知道,而且,不知道你想要的是什么,如果只是调用类的B的名称,估计比较容易,但是要从栈中获取B的实例,目前不知道。
limeng315 2009-10-23
  • 打赏
  • 举报
回复
不能沉了哦

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧