匿名方法的源代码

Hor*_*van 3 .net c# reflection anonymous-methods

如何获取匿名方法的源代码?

例如:

Func<Boolean> func = (() => DateTime.Now.Seconds % 2 == 0);

Console.WriteLine(GetSourceCode(func)); // must: DateTime.Now.Seconds % 2 == 0

String GetSourceCode<T>(Func<T> f) - ???
Run Code Online (Sandbox Code Playgroud)

Dav*_*trg 6

你可以将它包装在Expression中并在其上调用ToString(),这将获得源代码.

像这样:

Expression<Func<Boolean>> func = (() => DateTime.Now.Seconds % 2 == 0);
var str = func.ToString();
Run Code Online (Sandbox Code Playgroud)

输出str成为 () => DateTime.Now.Seconds % 2 == 0