是否有可能获得Action的方法体(文本)?

时间:2011-01-28 22:39:09

标签: c# action anonymous-delegates

我有一个情况,我已经排队了许多Action个对象,并且我有一个线程池在每个Action中工作。但是,如果应用程序在队列为空之前关闭,我想在关闭之前记录队列中剩余的内容。

是否可以从Action对象获取方法体?我可以看到来自MethodBody的{​​{1}}对象,但我没有办法将其作为字符串显示出来。

有什么想法,还是我疯了?

编辑:还有一件事;我也想保留国家信息。也就是说,我还想保留Action.Method.GetMethodBody()中使用的任何变量的值。

2 个答案:

答案 0 :(得分:4)

是的,你疯了。

正在执行的代码已编译为IL,然后JIT编译为机器代码。行动的文本早已不复存在。

你不需要排队行动。而是创建一个包含Action和方法名称的结构,以及您想要记录的任何其他信息。建立那些而不是Action的队列。

答案 1 :(得分:3)

我想你不是在寻找文本表示,而是在寻找加载和保存表达式树的方法。我确实遇到了这个问题,虽然我还没有使用它,但这看起来很有希望:expression tree serialization