美文网首页Amazing .NET
C#如何在当前方法中获取方法的调用栈

C#如何在当前方法中获取方法的调用栈

作者: 张中华 | 来源:发表于2019-07-08 20:58 被阅读34次

C#如何在当前方法中获取方法的调用栈?
调用栈如下, 如何在Class2ConsoleTest中获取方法名Class1CosoleTest及其类名和Main及其类名?利用StackTrace 即可。

Result

Code 如下:

Program
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace GetWhoInvokeThisMethod
{
    class Program
    {
        static void Main(string[] args)
        {
            Class1.Class1ConsoleTest();
            
        }
    }
}
Class1
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace GetWhoInvokeThisMethod
{
    public class Class1
    {
        public static void Class1ConsoleTest()
        {
            Class2 c = new Class2();
            c.Class2ConsoleTest();
        }
    }
}
Class2
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace GetWhoInvokeThisMethod
{
    public class Class2
    {
        public void Class2ConsoleTest()
        {
            StackTrace st = new StackTrace();
            var pName = st.GetFrame(1).GetMethod().Name;
            var ppName = st.GetFrame(2).GetMethod().Name;
            Console.WriteLine($"current method: {st.GetFrame(0).GetMethod().Name}");
            Console.WriteLine($"current class: {st.GetFrame(0).GetMethod().ReflectedType.Name}\n");

            Console.WriteLine($"parent method: {st.GetFrame(1).GetMethod().Name}");
            Console.WriteLine($"parent class: {st.GetFrame(1).GetMethod().ReflectedType.Name} \n");

            Console.WriteLine($"parent's parent method: {st.GetFrame(2).GetMethod().Name}");
            Console.WriteLine($"parent's parent class: {st.GetFrame(2).GetMethod().ReflectedType.Name}");

            Console.ReadLine();

        }
    }
}

相关文章

  • C#如何在当前方法中获取方法的调用栈

    C#如何在当前方法中获取方法的调用栈?调用栈如下, 如何在Class2ConsoleTest中获取方法名Class...

  • android调用堆栈

    android调用堆栈汇总 Android下输出堆栈的方法 Android各种获取代码调用栈的方法[补]

  • 打印代码中的调用层级(调用栈)

    获取方法调用栈,场景:比如你想让不同的人调用这个方法,给的参数不同,可以通过调用栈拦截修改。场景:打印日志上传到云...

  • SLua-Lua调用自定义C#类

    需要在Lua中调用c#类添加特性[CustomLuaClass],在Lua中调用方法的时候,给方法添加[MonoP...

  • struts2 向值栈中放数据的三种方式

    一、获取值栈的对象,调用值栈的set方法 1、代码 ValuesStackAction1.java struts....

  • java 泛型

    1,如何实例化泛型 2,如何获取java中的泛型类型 调用(通常在构造方法中调用):

  • unity3d c#调用java

    c#调用java非静态方法 C#调用静态类,静态方法 ; CustomClass的静态类,SetData是它的静...

  • Dalvik虚拟机异常处理

    方法调用栈 java虚拟机用方法调用栈来跟踪一系列的方法调用过程,该堆栈保存了每个调用方法的本地信息,比如方法的局...

  • 获取方法调用栈的信息

    获取方法调用栈的信息 需求 我在做 Android 的日志工具库时,有个需求:希望能够按照如下格式打印日志 类名....

  • iOS 程序内容加载顺序

    从方法调用栈中,找到了系统在执行 load 前调用的方法: 1.启动 dyld,将二进制文件初始化 2.Image...

网友评论

    本文标题:C#如何在当前方法中获取方法的调用栈

    本文链接:https://www.haomeiwen.com/subject/wefzhctx.html