小编典典

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

c#

我想编写一个方法,该方法获取调用方法的名称以及包含调用方法的类的名称。

C#反射是否可能?


阅读 336

收藏
2020-05-19

共1个答案

小编典典

public class SomeClass
{
public void SomeMethod()
{
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”,类型将是“ Caller”

更新两年后,我仍然对此表示赞同

在.Net
4.5中,现在有一种更简单的方法来执行此操作。您可以利用CallerMemberNameAttribute

继续前面的示例:

public class SomeClass
{
    public void SomeMethod([CallerMemberName]string memberName = "")
    {
        Console.WriteLine(memberName); //output will be name of calling method
    }
}
2020-05-19