public class Aclass { public static void abc() { //这里要获取 Bclass调用的这个方法,并且获取Bclass里面的num变量的值 // StackFrame frame = new StackFrame(1); //偏移一个函数位,也即是获取当前函数的前一个调用函数 //MethodBase method = frame.GetMethod(); //取得调用函数 } } public class Bclass { int num = 123; void bb() { Aclass.abc(); } }
------------------------------
求助 怎么在abc中获取这个bclass的局部变量num的值
你定义成有参方法不就好咯,调用参数传递
不能这样的了
@efreer: http://blog.csdn.net/lipei1220/article/details/9131325
@treven: 我这是c#的,而且你那个获取类名也没用,我这个也可以获取类名
那不叫局部变量num 叫私有字段成员:num
有没有办法获取啊
@efreer: https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=0&rsv_idx=1&tn=baidu&wd=.net%20%20%E5%8F%8D%E5%B0%84%20%E8%8E%B7%E5%8F%96%E7%A7%81%E6%9C%89%E6%88%90%E5%91%98&rsv_pq=996a2aeb00088dc8&rsv_t=dee1sFFYxhjGRKYvTw5YdqBtDQI0pcMVIMx5L9eVu6Uv1qcgCu9b6mCqfWQ&rqlang=cn&rsv_enter=0&rsv_sug3=40&rsv_sug1=25&rsv_sug7=100&rsv_sug2=0&inputT=8873&rsv_sug4=8874
你这个不要想了,没有办法
两种办法
1.把数字放到CallContext中(调用上下文,但需要你用完后清除掉,不然这个信息会一直跟着这个线程)
2.把数据放ThreadStatic标识的字段中,同理用完后也要清除掉
ps:两种方式均不可夸线程获取,要夸线程获取需要对你的数据做包装。
反射也可以获取,你写的通过StackFrame的思路是对的(但只能获取type信息,帧信息中只有这些,不包含实例信息),但这种不好,相当于你的方法隐式的要求外边必须按照这个规则来。