簡體   English   中英

在C#中獲取方法的名稱

[英]get the name of the method in C#

有沒有辦法得到目前我們在其中的方法的名稱?

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添加了Caller Information屬性,因此您可以使用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM