2013-03-02 2 views
3

Comment obtenir un code source de méthode anonyme?code source de la méthode anonyme

Par exemple:

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

Alors 'GetSourceCode' devrait retourner un' string'? Puis-je demander pourquoi vous en avez besoin? –

+0

Vous ne pouvez pas, vous pouvez seulement obtenir le 'MSIL' et décompiler si vous le souhaitez. Ce ne sont pas des expressions lambada. –

+0

Oui GetSourceCode renvoie la chaîne. –

Répondre

6

Vous pouvez envelopper l'intérieur Expression et appeler ToString() sur elle et que vous obtiendrez le code source.

Comme ceci:

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

La sortie str devient () => DateTime.Now.Seconds % 2 == 0

+0

+1 Génial, Je ne savais pas à ce sujet! la sortie est '() => DateTime.Now.Second% 2 == 0' –

+0

merci beaucoup –

+0

+1 Génial et simple! –

Questions connexes