有什么方法可以获取当前我们在其中的方法的名称吗?
private void myMethod()
{
string methodName = __CurrentMethodName__;
MessageBox(methodName);
}
像返回类名的 this.ToString() 是否有任何可能的方法通过监视或跟踪应用程序来获取方法的名称?
有什么方法可以获取当前我们在其中的方法的名称吗?
private void myMethod()
{
string methodName = __CurrentMethodName__;
MessageBox(methodName);
}
像返回类名的 this.ToString() 是否有任何可能的方法通过监视或跟踪应用程序来获取方法的名称?
这会让你的名字 -
string methodName = System.Reflection.MethodInfo.GetCurrentMethod().Name;
或者
string methodName = System.Reflection.MethodBase.GetCurrentMethod().Name;
.NET 4.5 添加了调用者信息属性,因此您可以使用CallerMemberNameAttribute
:
using System.Runtime.CompilerServices;
void myMethod()
{
ShowMethodName();
}
void ShowMethodName([CallerMemberName]string methodName = "")
{
MessageBox(methodName);
}
这具有在编译时而不是运行时烘焙方法名称的好处。不幸的是,没有办法阻止某人打电话ShowMethodName("Not a real Method")
,但这可能没有必要。
简单地
public string MyMethod()
{
StackTrace st = new StackTrace ();
StackFrame sf = st.GetFrame (1);
string methodName = sf.GetMethod().Name;
}
您可以像这样获取有关方法的信息
var method = MethodInfo.GetCurrentMethod();
var name = method.Name; //get method name
var parameters = method.GetParameters(); //get method parameters