2013-03-02 93 views
3

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

例如:

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

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

String GetSourceCode<T>(Func<T> f) - ??? 
+0

所以'GetSourceCode'应该返回一个'string'?我能问你为什么需要它吗? – 2013-03-02 12:15:19

+0

你不能,如果你喜欢,你只能得到'MSIL'和反编译。这不是兰达表情。 – 2013-03-02 12:18:21

+0

是GetSourceCode返回String。 – 2013-03-02 12:20:53

回答

6

你可以用它里面表达并在其上调用toString(),这将让你的源代码。

像这样:

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

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

+0

+1太棒了,不知道这个!输出是'()=> DateTime.Now.Second%2 == 0' – 2013-03-02 13:21:06

+0

非常感谢你 – 2013-03-02 13:33:33

+0

+1真棒,简单! – 2013-03-02 14:30:26