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

本文关键字:另一个 调用 静态函数 何获取 获取 | 更新日期: 2023-09-27 18:26:21

可能重复:
从方法(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();  
    }  
}

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

可以使用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;
}

如果您需要使用表单并想知道调用的是哪个表单,则使用事件和发送方

也许您使用的输出

Environment.StackTrace