【发布时间】:2012-07-14 20:29:52
【问题描述】:
大家好,我需要能够通用地遍历当前函数/子(用于日志记录)的所有参数,例如:
Public sub SampleHandler(ByVal Sender as Object, ByVal e as EventArgs)
Dim argholder as List(of Object)
For each arg in getcurrentargs() '<-------- That thing
argholder.add(arg)
Next
Log(argholder)
'Continue doing method things
End Sub
有什么想法吗?我一直试图通过 Emit(我不完全掌握)和 StackTrace 来提取它们,但到目前为止无济于事。多个消息来源告诉我,MSIL 能够做到这一点,但与我交谈过的任何人都无法给我一个可行的实现或对如何做的明确解释。
附加信息:
我需要能够遍历函数的所有参数并将它们的值添加到列表中。无论是通过某种提取名称然后可以利用它们来获取值的方法,还是只是某种可以引用它们的通用标识符,任何一种方式都可以,但它必须是程序化的和静态代码块。
目的是在任何非敏感函数(我正在为这个项目使用的代码有几百个)中,我希望能够插入对此代码块的内联引用(找出方法)来捕获函数的名称(完成),它是模块/类(完成),它何时运行(完成),结果(如果是一个函数;完成),当前的 err_level 是什么(完成)以及什么值作为参数传入(根据我知道模块/类和函数名称的逻辑,我可以在必要时匹配这些值),以便我可以转身并记录它们。 “敏感”功能,我必须以不同的方式处理,这样我就不会注销 p/w 和 u/n 或类似的东西;但这些都得到了照顾。
【问题讨论】:
-
您究竟是如何“插入对此代码块的内联引用”的?