侧边栏壁纸
  • 累计撰写 185 篇文章
  • 累计创建 77 个标签
  • 累计收到 17 条评论

目 录CONTENT

文章目录

C#获取当前执行代码的命名空间名、类名、方法名

码峰
2022-11-29 / 0 评论 / 1 点赞 / 2,694 阅读 / 334 字 / 正在检测是否收录...
广告 广告

需求

在C#中,有时候需要获取当前的方法名,类名,命名空间名和调用方法的堆栈等,比如在打印日志的场景,经常需要把当前的类名打印到日志中,有没有方法可以直接获取到这些名称呢。

当前代码的命名空间、类和方法名

C#获取当前代码的命名空间、类和方法名的示例代码如下:

public string Method()
{
    string str = ""; 
    //取得当前代码的命名空间    
    str += "命名空间名:" + System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Namespace + "\n";
 
    //取得当前代码的类全名(包括命名空间)    
    str += "类名:" + System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.FullName + "\n";
 
    //取得当前方法名    
    str += "方法名:" + System.Reflection.MethodBase.GetCurrentMethod().Name + "\n"; str += "\n";
}

调用方法堆栈

C#获取调用方法的堆栈,主要通过Diagnostics类来实现,参考代码如下:

public void Method()
{
    //父方法名
    System.Diagnostics.StackTrace st = new System.Diagnostics.StackTrace(true);
    System.Reflection.MethodBase mb = st.GetFrame(1).GetMethod();
 
    //取得父方法命名空间    
    str += mb.DeclaringType.Namespace + "\n";
 
    //取得父方法类名    
    str += mb.DeclaringType.Name + "\n";
 
    //取得父方法类全名    
    str += mb.DeclaringType.FullName + "\n";
 
    //取得父方法名    
    str += mb.Name + "\n"; return str;
}
1
广告 广告

评论区