有时候需要对调试有一些反思。但是像
这样的方式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);
答案 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
}
。