比如
public class Test
{
   public static Run()
   {
      TestClass.CheckIt(参数);
   }
}这个TestClass.CheckIt方法有没有可能得知,是被Test.Run调用的?

解决方案 »

  1.   

    你到msdn中去查StackTrace,有你感兴趣的东西
      

  2.   

    public class Test
    {
       public static Run()
       {
          string cls = System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.FullName;
          string method = System.Reflection.MethodBase.GetCurrentMethod().Name;
          TestClass.CheckIt(参数,method,cls);
       }
    }
    可以用上面的办法
      

  3.   

    这些动态的东西不太好得到吧如果实在想知道的话,不如你就在Checkit的时候传参数进去吧比如叫  Checkit(String InvokerMessage)
      

  4.   

    要是参数自己定义的话:TestClass.CheckIt(object sender)应该可以找到调用的对象吧。或者干脆直接在调用参数中传入调用的方法名,可是如果没有参数的话,那就麻烦了,得使用一些设计模式了,具体的我也不太清楚,帮你顶一下吧
      

  5.   

    public class Test
    {
    public static void Run()
    {
    TestClass.CheckIt();
    }
    } public class TestClass
    {
    public static void CheckIt()
    {
    StackTrace st=new StackTrace(true); 
    Console.WriteLine(st.GetFrame(1).GetMethod().DeclaringType.ToString());    
    Console.WriteLine(st.GetFrame(1).GetMethod().Name.ToString());    
    }
    }
      

  6.   

    和线程安全有关吗?
    你要的好像仅仅是谁调用了这个函数,而不是调用者的引用,类似.net中常见的sender参数我不觉得这个有什么实际用途,如果是限定caller,我宁可使用attribute
      

  7.   

    你可以想.NET事件处理那样,传递一个Object sender参数过去