有什么方法可以获取当前我们在其中的方法的名称?在C#中获取方法的名称
private void myMethod()
{
string methodName = __CurrentMethodName__;
MessageBox(methodName);
}
像this.ToString()返回的类名是有任何可能的方式,通过类似的监视或跟踪该应用获取方法的名称?
有什么方法可以获取当前我们在其中的方法的名称?在C#中获取方法的名称
private void myMethod()
{
string methodName = __CurrentMethodName__;
MessageBox(methodName);
}
像this.ToString()返回的类名是有任何可能的方式,通过类似的监视或跟踪该应用获取方法的名称?
这将让你的名字 -
string methodName = System.Reflection.MethodInfo.GetCurrentMethod().Name;
OR
string methodName = System.Reflection.MethodBase.GetCurrentMethod().Name;
只需
public string MyMethod()
{
StackTrace st = new StackTrace();
StackFrame sf = st.GetFrame (1);
string methodName = sf.GetMethod().Name;
}
.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")
,但这可能不是必需的。
你能得到关于方法这样
var method = MethodInfo.GetCurrentMethod();
var name = method.Name; //get method name
var parameters = method.GetParameters(); //get method parameters
的方法名称参数需要被拖欠 –
UMM的信息...我想你没有编译这个。所以,当我们正在修复时,它也需要输入。 :) –
@GarryVass更正(和测试),谢谢。 –