在Visual Studio Watch窗口中展平继承的成员?

时间:2010-02-17 13:49:49

标签: visual-studio visual-studio-2008 debugging

有没有办法让Watch窗口在一个长平面列表中显示所有继承的属性和字段,而不是隐藏在嵌套的“基”节点后面?

我正在调试一些大量使用继承的C#代码 - 我想看的一些属性在Watch窗口中有三个级别的“base”。如果我只是想检查一个这样的对象,这或多或少可以忍受,但我实际上正在查看它们的树...

2 个答案:

答案 0 :(得分:8)

请参阅http://blogs.msdn.com/b/jaredpar/archive/2010/02/19/flattening-class-hierarchies-when-debugging-c.aspx

更新:我写了一个名为OzCode的商业工具来解决这个问题。这个想法是,如果你对基类的属性感兴趣,你可以“明星”该属性,这会导致属性出现在成员列表的顶部,也可以出现在其父文本中。

因此,例如,在以下场景中,我必须扩展两个基本节点才能看到我想要的属性,“重要”和“有趣”: No Stars

但是一旦我为这些属性加注星标,它们将始终显示在顶部,即使在查看派生类型的变量时,我也会看到:

After adding stars

这些stars会保留,只要您从那一刻开始在DataTip或QuickWatch窗口中查看该类型的对象,就会显示这些{{3}},因此下次当您输入该类型的变量时,您将不会需要扩展那些“基础”节点。并且因为已加星标的值显示为父节点的文本,如果您正在查看这些重度嵌套对象的树数据结构(正如您所说的那样),您将能够看到这些属性,甚至根本不扩展节点。 / p>

完全披露:我是我在此描述的工具的合着者。

答案 1 :(得分:4)

不是这样的。你看,这是一个功能!在大多数情况下,查看房产来自哪里的能力非常重要。

我理解你的痛苦。有一些工作。首先,您可以将 object.property 放在观察窗口中。这将只显示您要查找的属性。这对于挖掘特定的财产非常有用,但对于获得所有其他财产而言并非如此。

您还可以尝试 (BaseClass)对象 。这会将它强制转换为包含您正在寻找的属性(属性?)的基础对象。同样,它非常适合查找特定的属性子集,但完全隐藏所有其他属性。

祝你好运,狩猎好。