说我有一些像
这样的代码namespace Portal
{
public class Author
{
public Author() { }
private void SomeMethod(){
string myMethodName = "";
// myMethodName = "Portal.Author.SomeMethod()";
}
}
}
我可以找到我正在使用的方法的名称吗?在我的示例中,我想以编程方式将myMethodName
设置为当前方法的名称(即在本例中为"Portal.Author.SomeMethod"
)。
由于
答案 0 :(得分:14)
MethodInfo.GetCurrentMethod().Name
答案 1 :(得分:3)
System.Reflection.MethodBase.GetCurrentMethod()。名称
答案 2 :(得分:2)
MethodBase.GetCurrentMethod()
答案 3 :(得分:2)
System.Diagnostics
拥有StackFrame
/ StackTrace
,可以让您实现这一目标,包括更多内容。您可以像这样检查整个调用堆栈:
StackFrame stackFrame = new StackFrame(1, true); //< skip first frame and capture src info
StackTrace stackTrace = new StackTrace(stackFrame);
MethodBase method = stackTrace.GetMethod();
string name = method.Name;
答案 4 :(得分:1)
虽然@leppie让我走上了正确的轨道,它只给了我方法的名称,但是如果你看看我的问题,你会看到我想要包含命名空间和类信息......
所以
myMethodName = System.Reflection.MethodBase.GetCurrentMethod().ReflectedType +
"." + System.Reflection.MethodBase.GetCurrentMethod().Name;