有什麼方法可以獲取當前我們在其中的方法的名稱?在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更正(和測試),謝謝。 –