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();
}
}
Name 将是“ Call”,类型将是“ Caller”。
更新: 两年后,因为我仍然得到这方面的赞成票
在.NET 4.5中,现在有一个更简单的方法可以做到这一点。
用上面的例子:
public class SomeClass
{
public void SomeMethod([CallerMemberName]string memberName = "")
{
Console.WriteLine(memberName); // Output will be the name of the calling method
}
}