有没有办法获取我们当前所在方法的名称?
private void myMethod()
{
string methodName = __CurrentMethodName__;
MessageBox(methodName);
}
像这样返回类名的.ToString()有没有办法通过监视或跟踪应用来获取方法的名称?
答案 0 :(得分:12)
这会得到你的名字 -
string methodName = System.Reflection.MethodInfo.GetCurrentMethod().Name;
OR
string methodName = System.Reflection.MethodBase.GetCurrentMethod().Name;
答案 1 :(得分:6)
.NET 4.5添加了Caller Information属性,因此您可以使用CallerMemberNameAttribute
:
using System.Runtime.CompilerServices;
void myMethod()
{
ShowMethodName();
}
void ShowMethodName([CallerMemberName]string methodName = "")
{
MessageBox(methodName);
}
这有利于在编译时在方法名称中烘焙,而不是运行时。不幸的是,没有办法阻止有人打电话给ShowMethodName("Not a real Method")
,但这可能没有必要。
答案 2 :(得分:4)
简单地
public string MyMethod()
{
StackTrace st = new StackTrace ();
StackFrame sf = st.GetFrame (1);
string methodName = sf.GetMethod().Name;
}
答案 3 :(得分:2)
您可以获取有关此方法的信息
var method = MethodInfo.GetCurrentMethod();
var name = method.Name; //get method name
var parameters = method.GetParameters(); //get method parameters