如何获取调用另一个类静态函数的类名

时间:2012-02-29 11:56:14

标签: c# oop

  

可能重复:
  Retrieving the calling method name from within a method (C#)

我有一个班级A,其中有一个名为Func1的方法;这个功能是静态的。 现在有一些其他课程说BC使用A.Func1

如何获取包含正在调用的函数的类名?

public class A  
{  
    public static void Func1()  
    {  
    // who called me?  
    }  
}  

public class B  
{  
    public void CallFunc()  
    {  
        A.Func1();  
    }  
}

public class C
{  
    public void AlsoCallFunc()  
    {  
        A.Func1();  
    }  
}

3 个答案:

答案 0 :(得分:2)

可以使用StackTrace类来获取此类信息。

要获取调用方法名称,我有时会使用此函数。 但您需要检查它是否适用于您的特定情况

private static string GetCallingMethodName()
{        
    const int iCallDeepness = 2; 
    System.Diagnostics.StackTrace stack = new System.Diagnostics.StackTrace(false);
    System.Diagnostics.StackFrame sframe = stack.GetFrame(iCallDeepness);
    return sframe.GetMethod().Name;
}

答案 1 :(得分:0)

也许您使用

的输出
Environment.StackTrace

答案 2 :(得分:0)

如果您需要使用表单并想知道正在调用哪个表单,请使用事件和发件人