作为vb.net应用程序日志系统的一部分,我正在开发中,如果出现未处理的异常(“应用程序事件”中为MyApplication_UnhandledException调用),我想转储每个类中每个全局变量的名称和值,并且导致异常的函数/子的本地变量到本地.log文件,客户端可以将其发送回给我进行调试。我知道这必须通过反思来完成,但是我不知道该怎么做。我之所以需要它,是因为Stack Trace(我也将其转储到日志文件中)不存储函数参数的值,也不存储全局变量的值。
这是我用于全局变量的部分:
Dim assbly As Assembly = [Assembly].GetExecutingAssembly()
Dim types As Type() = assbly.GetTypes()
For Each t As Type In types
For Each p As FieldInfo In t.GetFields()
Logger.addToLog(p.Name & " - " & p.FieldType.Name) 'should also get value, maybe with p.getValue() ?
Next
Next
不幸的是,它只打印每个类的Public全局变量,而我也需要Private变量。另外,这不会打印值。 p.getValue()调用需要一个对象作为参数,但是我似乎无法理解应该给它什么。 至于局部变量,我还没有想出任何办法,我希望这里的人可能知道。我也觉得必须有一些更好的方法来实现我想要的。有人可以建议吗?