我有一个情况,我已经排队了许多Action
个对象,并且我有一个线程池在每个Action
中工作。但是,如果应用程序在队列为空之前关闭,我想在关闭之前记录队列中剩余的内容。
是否可以从Action
对象获取方法体?我可以看到来自MethodBody
的{{1}}对象,但我没有办法将其作为字符串显示出来。
有什么想法,还是我疯了?
编辑:还有一件事;我也想保留国家信息。也就是说,我还想保留Action.Method.GetMethodBody()
中使用的任何变量的值。
答案 0 :(得分:4)
是的,你疯了。
正在执行的代码已编译为IL,然后JIT编译为机器代码。行动的文本早已不复存在。
你不需要排队行动。而是创建一个包含Action和方法名称的结构,以及您想要记录的任何其他信息。建立那些而不是Action的队列。
答案 1 :(得分:3)
我想你不是在寻找文本表示,而是在寻找加载和保存表达式树的方法。我确实遇到了这个问题,虽然我还没有使用它,但这看起来很有希望:expression tree serialization。