C#获取函数自身信息及调用方信息

做插件做框架都免不了需要做错误信息提示或者指引,而这种功能最重要的问题在于如何获取函数名及类名等数据,这里记录一种从堆栈读取调用信息的方法。

函数

public void getFileName()
{
    MethodBase method;
    method = new StackTrace().GetFrame(0).GetMethod();
    UnityEngine.Debug.LogFormat("获取自身信息 >>> ClassName:[{0}] MethodName:[{1}]", method.ReflectedType.Name, method.Name);

    method = new StackTrace().GetFrame(1).GetMethod();
    UnityEngine.Debug.LogFormat("获取直接调用方信息 >>> ClassName:[{0}] MethodName:[{1}]", method.ReflectedType.Name, method.Name);
}

示例

private void Awake()
{
    print("----------------------------- Awake直接调用 -----------------------------");
    getFileName();
    print("----------------------------- 通过函数AA调用 -----------------------------");
    AA();
}
public void getFileName()
{
    MethodBase method;
    method = new StackTrace().GetFrame(0).GetMethod();
    UnityEngine.Debug.LogFormat("获取自身信息 >>> ClassName:[{0}] MethodName:[{1}]", method.ReflectedType.Name, method.Name);

    method = new StackTrace().GetFrame(1).GetMethod();
    UnityEngine.Debug.LogFormat("获取直接调用方信息 >>> ClassName:[{0}] MethodName:[{1}]", method.ReflectedType.Name, method.Name);
}
public void AA()
{
    getFileName();
}