【问题标题】:Flatten inherited members in Visual Studio's Watch window?在 Visual Studio Watch 窗口中展平继承的成员?
【发布时间】:2010-02-17 13:49:48
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    但是一旦我为这些属性加注星标,它们将始终出现在顶部,即使查看 Derived 类型的变量也是如此,所以我会看到:

    这些stars 是持久的,并且从那一刻起,每当您在数据提示或快速观察窗口中查看该类型的对象时都会显示,因此下次您使用该类型的变量时,您不需要展开那些“基础”节点。而且由于星号值显示为父节点的文本,如果您正在查看这些重度嵌套对象的树数据结构(正如您所说的那样),您将能够看到这些属性,甚至根本不需要扩展节点。

    完整披露:我是我在这里描述的工具的共同作者。

    【讨论】:

    • a) 这还存在吗? (您的网站已关闭)b)它是否适用于所有类(本机 .Net 框架类)?
    • @tbone a) 是的,该产品已重新命名为 OzCode,更新了我的答案 b) 是的!
    • 您是否对定价进行了 A/B 测试?我很想拥有这个,但花 70 美元是一个相当大的心理障碍,即使在经济上不合逻辑。
    【解决方案2】:

    并非如此。你看,这是一个功能!在大多数情况下,查看属性来自何处的能力很重要。

    我理解你的痛苦。有一些解决方法。首先,您可以将 object.property 放在监视窗口中。这只会显示您正在寻找的属性。这对于挖掘特定属性非常有用,但对于获取所有其他属性则不然。

    你也可以试试(BaseClass)object。这会将其转换为包含您要查找的属性(属性?)的基础对象。同样,它非常适合查看特定的属性子集,但完全隐藏了所有其他属性。

    祝你好运和狩猎。

    【讨论】:

    • 谢谢,不幸的是,这些想法都不能帮助我查看树深处的对象:(
    • 如果您谈论的是 DEEP 类的私有成员,您应该能够使用演员表。由于我不知道您的代码,因此您可能是正确的,因为您必须进行练习。如果是这样的话,你可能就像他们说的那样在小溪上。
    • 能够看到成员来自哪里当然是一个重要的特性,但是强迫你导航继承链而不是仅仅显示每个成员的源类的平面结构是一个错误。 >:(
    猜你喜欢
    • 1970-01-01
    • 2010-11-09
    • 1970-01-01
    • 2023-03-10
    • 2021-09-02
    • 1970-01-01
    • 2013-08-06
    • 2012-03-18
    • 1970-01-01
    相关资源
    最近更新 更多