日期:2014-05-18  浏览次数:21063 次

在静态方法里,怎么能得到调用者的类名?
在静态方法里,怎么能得到调用者的类名?
比如我有一个静态方法:
public class myClass
{
  public void fun()
  {
  xhelper.helpM();
  }
}


public class xhelper
{
  public static void helpM()
  {
//这里怎么能得到当前的调用者类名myClass?
  }
}

------解决方案--------------------
给方法helpM传递一个调用者的指针

C# code
static void helpM(object sender)
{
    //获取调用者的Type类型,然后想怎么玩怎么玩。
    var type = sender.GetType();
}

------解决方案--------------------
顶 2楼的!!
------解决方案--------------------
public static void helpM(object o)
{
Type type=o.GetType();
type.Name;//这里就是调用者的类名
//这里怎么能得到当前的调用者类名myClass?
}
------解决方案--------------------
探讨

给方法helpM传递一个调用者的指针

C# code
static void helpM(object sender)
{
//获取调用者的Type类型,然后想怎么玩怎么玩。
var type = sender.GetType();
}

------解决方案--------------------
System.Diagnostics.StackTrace st = new System.Diagnostics.StackTrace();
string name = st.GetFrame(1).GetMethod().Name;

然后大概可以反射出来,吧
------解决方案--------------------
LS正解,晚来一步,通过StackTrace上去
------解决方案--------------------
反射效率都不高,你还是用前面的方法效率比较高,

探讨

还有一个问题,使用StackTrace效率如何?会不会很慢?