如何获取生成lambda表达式的字符串(源代码)?

Mic*_*ber 6 c# lambda tostring

(对于LISP黑客而言:我正在寻找C#中的LISP-quote等价物)

我正在尝试为一个有Func作为成员的类编写一个有意义的ToString方法.经验丰富的API用户可以通过setter-method设置此成员

myClassObject.SetFunction( (x) => x*x );
Run Code Online (Sandbox Code Playgroud)

现在,当我在成员上使用ToString方法时,它只返回

System.Func<double,double>
Run Code Online (Sandbox Code Playgroud)

这不是很有帮助.有用的是

"(x) => x*X"
Run Code Online (Sandbox Code Playgroud)

有没有(最好的简单)方法呢?

感谢您的帮助或评论.

编辑:更正了一些拼写错误

Tho*_*que 8

Expression<Func<double,double>> expr = x => x * x;
string s = expr.ToString(); // "x => (x * x)"
Run Code Online (Sandbox Code Playgroud)

  • @Michael如果已经捕获了一个变量,那么它实际上被提升为编译器生成的类中的一个字段.为了确保其名称不会发生冲突,编译器会给它一个非常*时髦的名字.你可以做的不多. (2认同)