我想知道是否有办法在Visual Basic 2010(Express,FWIW)中获取对象并浏览其结构以可视化内部数据的布局。
例如,我有一个名为“model”的对象,它由一个对我来说是黑盒子的函数填充。模型由“读取”功能设置,该功能从磁盘加载DXF文件。读取功能没有很好的记录。
我发现的是model.Entities最终包含不同对象的列表,所有对象都具有不同的属性。我希望能够简单地浏览这个对象列表并在运行时查看它们的相关属性和值,类似于只需键入“blah”就可以使用Intellisense查看列表。并等待弹出窗口出现。
您可以弹出打开和关闭的树状视图非常棒。显然这必须在运行时而不是在编辑器中工作,因为如果程序没有运行,文件还没有被加载。
这在Visual Basic 2010中是否可行?它是我找不到的内置功能吗?
谢谢!
答案 0 :(得分:2)
如果函数返回一个对象,那么该对象在某处有一个类定义。在VS中右键单击引用并选择“在对象浏览器中查看”,您将看到包含所有属性和方法的类布局。您也不需要在运行时执行此操作。
如果你想深入挖掘,那么你应该看看Reflector。
修改强>
在更多地阅读你的评论之后,我通常会在我尝试这样做时做三件事之一:
使用“自动和本地”窗口
设置断点并查看Autos和Locals窗口。如果您没有看到它们,则它们位于Debug,Windows的主菜单下。这允许您走一个变量的树视图。有时候这里可能会有很多东西,为什么我通常会使用下面其他两种方法中的一种。
使用立即窗口
立即窗口(IW)允许您键入表达式并打印输出值。它不像你想要的树视图,但它允许你至少捕杀和啄。如果您想象以下简短的代码,并在第二行放置断点:
Dim Names As New List(Of String)({"Alice", "Bob", "Chuck"})
Console.WriteLine(Names)
在IW中你可以输入:
?Names
它会输出:
Count = 3
(0): "Alice"
(1): "Bob"
(2): "Chuck"
问号符号表示“打印”。您可以键入几乎任何有效的打印表达式:
?Names(0)
"Alice"
?Names(0).Substring(0,1)
"A"
?Names(0).Contains("ice")
True
当你正在做所有这些时,你将获得关于正在发生的事情的智能感知。
使用“断点和悬停”
我不认为它有一个超越IntelliSense的名称,但是一旦你遇到断点,你可以将鼠标悬停在任何变量上并检查其当前值。您会偶尔发出警告,检查会导致一些处理,但由于您只是调试,这应该没问题。有时当我调试集合时,我将创建一个特定于集合中一个项目的变量,以使这种技术更容易。一旦我完成调试,我就会摆脱它,但这确实有助于这个过程。
还有其他