C#獲取當前方法信息,上端調用方方法信息以及方法調用鏈

        public static void TestGetParentMethodInfo()
        {
            GetMethodInfo(0);
        }

        public static void GetMethodInfo(int index)
        {
            index++;//由於我是封裝了方法,相當於上端想要獲取本身,其實對於這裏而言,上端的本身就是這裏的上端,所以需要+1,以此類推
            var stack = new StackTrace(true);

            //0是本身,1是調用方,2是調用方的調用方...以此類推
            var method = stack.GetFrame(index).GetMethod();//想要獲取關於方法的信息,可以自己斷點調試這裏

            var dataList = new Dictionary<string, string>();
            var module = method.Module;
            dataList.Add("模塊", module.Name);
            var deClearType = method.DeclaringType;
            dataList.Add("命名空間", deClearType.Namespace);
            dataList.Add("類名", deClearType.Name);
            dataList.Add("完整類名", deClearType.FullName);
            dataList.Add("方法名", method.Name);
            var stackFrames = stack.GetFrames();
            dataList.Add("調用鏈", string.Join(" -> ", stackFrames.Select((r, i) =>
            {
                if (i == 0) return null;
                var m = r.GetMethod();
                return $"{m.DeclaringType.FullName}.{m.Name}";
            }).Where(r => !string.IsNullOrWhiteSpace(r)).Reverse()));

            dataList.ForeachLingbug(r =>
            {
                Console.WriteLine($"{r.Key}:{r.Value}");
            });
        }

 

測試結果:

 

Ending~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章