首页 > 后端开发 > C++ > 如何使用C#反射获取调用方法的名称和类?

如何使用C#反射获取调用方法的名称和类?

Barbara Streisand
发布: 2024-12-29 21:33:10
原创
518 人浏览过

How Can I Get the Calling Method's Name and Class Using C# Reflection?

使用反射理解调用方法

在 C# 中,可以使用反射来检索有关调用方法及其原始类的信息。这允许开发人员创建需要了解调用上下文的实用程序或日志记录功能。

获取调用方法名称和类

获取调用方法的名称以及使用反射的包含类,请按照以下步骤操作:

  1. 创建一个表示调用的第一帧的 StackFrame 对象method,即当前方法:

    StackFrame frame = new StackFrame(1);
    登录后复制
  2. 从 StackFrame 中获取方法信息:

    var method = frame.GetMethod();
    登录后复制
  3. 提取方法名称并声明类型:

    var name = method.Name;
    var type = method.DeclaringType;
    登录后复制

示例

考虑以下课程:

public class SomeClass
{
    public void SomeMethod()
    {
        // Get the calling method and type
        StackFrame frame = new StackFrame(1);
        var method = frame.GetMethod();
        var type = method.DeclaringType;
        var name = method.Name;
    }
}
登录后复制

在另一个课程中:

public class Caller
{
    public void Call()
    {
        SomeClass s = new SomeClass();
        s.SomeMethod();
    }
}
登录后复制

调用 Call 时,变量名称和类型输入SomeClass 的 SomeMethod 将包含以下值:

  • name: "Call"(调用方法名称)
  • type: "Caller"(声明类名称)

在 .NET 4.5 中使用 CallerMemberNameAttribute

在 .NET 4.5 及更高版本中,有一个使用 CallerMemberNameAttribute 的简化方法:

public class SomeClass
{
    public void SomeMethod([CallerMemberName]string memberName = "")
    {
        // Output the calling method name
        Console.WriteLine(memberName);
    }
}
登录后复制

当调用 SomeClass.SomeMethod 时,memberName 将包含调用方法的名称.

以上是如何使用C#反射获取调用方法的名称和类?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板