请考虑以下代码。它具有foo
方法,该方法采用Func。该方法将打印出传入参数的名称。由于呼叫为() => Hello1()
,因此我希望funcParam.Method.Name为Hello1,但事实并非如此。对于对foo
的4个调用,我得到以下信息:
<Main>b__0_0
<Main>b__0_1
<Main>b__0_2
<Main>b__0_3
我的问题如下:
代码:
class Program {
static void Main(string[] args) {
foo(() => Hello1());
foo(() => Hello2());
foo(() => Hello3());
foo(() => Hello4());
}
public static T foo<T>(Func<T> funcParam) where T : class {
Console.WriteLine(funcParam.Method.Name);
return funcParam();
}
private static Person Hello1() { return new Person(); }
private static Person Hello2() { return new Person(); }
private static Person Hello3() { return new Person(); }
private static Person Hello4() { return new Person(); }
}
public class Person {
public string Name { get; set; }
}