在C#中获取方法的名称

时间:2013-08-04 18:13:31

标签: c# .net monitoring tracing

有没有办法获取我们当前所在方法的名称?

private void myMethod()
{
    string methodName = __CurrentMethodName__;
    MessageBox(methodName);
}

像这样返回类名的.ToString()有没有办法通过监视或跟踪应用来获取方法的名称?

4 个答案:

答案 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