如何在另一个函数中获取“真实”函数名称?

时间:2014-02-04 00:05:44

标签: c#

有时候需要对调试有一些反思。但是像

这样的方式
System.Reflection.MethodBase.GetCurrentMethod().GetParameters().[0].Name 

返回参数名称,而不是实际的函数名称。在这种情况下如何找出函数的“真实”名称?

void OuterFunction(Func<string, int> f)
{
   int result = f("input");
   // how to get here function name 'g' instead of 'f'?
}

int g(string s)
{
    Console.WriteLine(s);
    return 0;
}

OuterFunction(g);

2 个答案:

答案 0 :(得分:0)

写:

f.Method.Name

并且不要忘记纠正g以返回int以便编译;)

答案 1 :(得分:0)

使用代理Method的{​​{1}}属性。

f

请注意,如果传入lambda,您将获得该lambda主体的生成名称,如void OuterFunction(Func<string, int> f) { int result = f("input"); string name = f.Method.Name; //name has the value "g" in your example }