大家好我现在有个问题想问一下大家public void fun1(){fun3();//调用fun3
}
public void fun2(){
fun3();//调用fun3;
}
public void fun3(){
//这里我想打印是哪个函数调用了fun3本身,也就是说,我想得到调用fun3的函数的全部数据,比如函数名,参数类型等
//这个用反射能得到当前函数所在上级的函数的一切信息吗
}问题结束,不知道大家有没有理解我的意思,呵呵,谢谢大家,我着急用

解决方案 »

  1.   

    你可以让fun3带个参数,调用时传递个参数进去即可,这是最简单的做法。
    至于你说的上级函数信息,有个记录上下文的类,我没研究过,在多线程操作中见到过,感觉挺复杂的,没高兴去看
      

  2.   

    跟反射没关系,你要看的是调用堆栈
    public void fun3()
    {
                StackTrace st = new StackTrace();
                if (st.FrameCount > 1)
                {
                    StackFrame sf = st.GetFrame(1);
                    Console.WriteLine("Called by:" + sf.GetMethod());
                }
    }
      

  3.   

    你说的这个方法不行,我的意思是用反射或是别的什么东西,就是利用.net 自身的功能的东西能得到反射的信息,
      

  4.   

    我再想问一下,如果 上级是属性,stacktrace能不能把属性信息给引出来
    比如class c{
    public string str{
    get{
    demo();
    }
    set{
    //一些代码
    }
    private void demo(){
    //这里能不能得到上级的类型,比如现在这个例子,demo上级是一个属性的get,我现在想知道get上边的这个属性str的所有信息,我用2楼的方法只返回了方法,但是得不到属性方面的信息
    }
    }
    }