首页 新闻 会员 周边

如何反射获取,被调用方法的上级类的局部变量的值??

0
[待解决问题]
 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的值

IDOER的主页 IDOER | 初学一级 | 园豆:19
提问于:2017-05-05 11:26
< >
分享
所有回答(4)
0

你定义成有参方法不就好咯,调用参数传递

如切如磋,如琢如磨 | 园豆:216 (菜鸟二级) | 2017-05-05 11:30

不能这样的了

支持(0) 反对(0) IDOER | 园豆:19 (初学一级) | 2017-05-05 12:02

@efreer: http://blog.csdn.net/lipei1220/article/details/9131325

@treven: 我这是c#的,而且你那个获取类名也没用,我这个也可以获取类名

支持(0) 反对(0) IDOER | 园豆:19 (初学一级) | 2017-05-05 14:43
0

那不叫局部变量num 叫私有字段成员:num

吴瑞祥 | 园豆:29449 (高人七级) | 2017-05-05 11:50

有没有办法获取啊

支持(0) 反对(0) IDOER | 园豆:19 (初学一级) | 2017-05-05 12:51

@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

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2017-05-05 13:09
0

你这个不要想了,没有办法

czd890 | 园豆:14412 (专家六级) | 2017-05-05 16:03
0

两种办法

1.把数字放到CallContext中(调用上下文,但需要你用完后清除掉,不然这个信息会一直跟着这个线程)

2.把数据放ThreadStatic标识的字段中,同理用完后也要清除掉

ps:两种方式均不可夸线程获取,要夸线程获取需要对你的数据做包装。

 

反射也可以获取,你写的通过StackFrame的思路是对的(但只能获取type信息,帧信息中只有这些,不包含实例信息),但这种不好,相当于你的方法隐式的要求外边必须按照这个规则来。

 

Daniel Cai | 园豆:10424 (专家六级) | 2017-05-05 17:56
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册