2013-03-02 8 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'? Могу ли я спросить, зачем вам это нужно? –

+0

Вы не можете, вы можете получить «MSIL» и декомпилировать, если хотите. Это не выражения ламбады. –

+0

Да GetSourceCode возвращает String. –

ответ

6

Вы можете обернуть его в Expression и вызвать ToString() на нем и что поможет вам исходный код.

Как это:

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

ул выход становится () => DateTime.Now.Seconds % 2 == 0

+0

+1 Удивительный, не знал об этом! output is '() => DateTime.Now.Second% 2 == 0' –

+0

большое спасибо –

+0

+1 Удивительный и простой! –

Смежные вопросы