如何转储方法的局部变量(获取它们的名称,类型和值)?

时间:2018-03-13 22:55:07

标签: .net vb.net reflection

我正在尝试为主项目编写错误处理程序,该主程序将位于子或函数的Catch ex块中,并在触发时写入错误日志。大部分工作已经完成,但为了灵感,我正在检查我编写的一些旧网站,他们使用var_dumpprint_r(在PHP中)的组合来显示声明的变量及其内容。我想将此功能添加到我的错误处理程序中,以便我可以在抛出异常时轻松查看当前声明的变量的状态。问题是我找不到在.NET中动态复制它的方法。

下面的示例显示了如何使用处理程序:

 Private Sub TestMethod()
    Dim x As Integer = 301
    Dim y As String = "hello"
    Dim z As Boolean = True
    Dim a As DateTime = DateTime.Now
    Dim b As Char = "c"c
    Dim c As Decimal = 0.45D

    Try
        x = 222
        ' Generate error here
        Throw New Exception("There has been an error")

    Catch ex As Exception
        ' code here to record variable names, types and values
    End Try
End Sub

理想情况下,我希望能够运行一个例程来查看当前范围中声明的变量,它们的类型及其值。

我已经开始查看system.reflection并使用MethodInfo.GetCurrentMethod()但是,最接近我想要的效果是我可以列出声明变量的类型而不是它们的内容。使用PropertyInfo为我带来了几个不同的项目,从表单大小到命名空间,但不是我需要的声明变量。

我想知道是否有其他人设法使用VB.NET或C#找到了这样做的方法,或者是否有任何第三方类可以添加此功能。

编辑:在我半睡半醒的状态下,我把Try放在错误的地方。问题仍然存在,因为我遇到了和以前一样的问题。我可以得到变量的类型但不是名称或值。还应该补充一点,奇怪的是调试器可以在IDE中执行,但不能在代码中执行。

0 个答案:

没有答案