代码之家  ›  专栏  ›  技术社区  ›  Roman Starkov

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

  •  22
  • Roman Starkov  · 技术社区  · 15 年前

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

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

    2 回复  |  直到 10 年前
        1
  •  8
  •   Omer Raviv    10 年前

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

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

    例如,在下面的场景中,我必须展开两个基本节点来查看我想要的属性,“重要”和“有趣的”:

    但是一旦我给这些属性加上星号,它们就会一直出现在顶部,即使是在查看派生类型的变量时,我也会看到:

    这些 stars 是持久存在的,从那时起每当您在datatip或quickwatch窗口中查看该类型的对象时都会显示出来,因此下次当您使用该类型的变量时,不需要展开这些“base”节点。而且,由于星标值显示为父节点的文本,因此,如果您正在查看这些重嵌套对象的树数据结构(如您所述),您将能够在根本不展开节点的情况下查看这些属性。

    完全公开 :我是在此描述的工具的共同作者。

    更新: 我写了一个叫做 OzCode 这就解决了这个问题。其思想是,如果您对基类的属性感兴趣,可以对该属性“加星号”,这会导致该属性出现在成员列表的顶部,也会出现在其父列表的文本中。

    例如,在下面的场景中,我必须展开两个基本节点来查看我想要的属性,“重要”和“有趣的”: No Stars

    但是一旦我给这些属性加上星号,它们就会一直出现在顶部,即使在查看派生类型的变量时,我也会看到:

    After adding stars

    这些 stars 是持久化的,从那一刻起,每当您在DataTip或QuickWatch窗口中查看该类型的对象时,都会显示出来,因此下次当您使用该类型的变量时,不需要展开这些“基本”节点。而且,因为星标值显示为父节点的文本,所以如果您查看这些重嵌套对象的树数据结构(如您所说),您将能够看到这些属性,而不必展开节点。

    充分披露 :我是我在这里描述的工具的合著者。

        2
  •  4
  •   Craig    15 年前

    不是这样的。你看,这是一个特色!在大多数情况下,了解财产来源的能力是很重要的。

    不过我理解你的痛苦。有一些变通办法。首先,你可以把 对象属性 在监视窗口。这将只显示您要查找的属性。这对于挖掘一个特定的财产是很好的,但对于获取所有其他财产却不是那么好。

    你也可以试试 (基类)对象 . 这会将其强制转换为包含属性(属性?)的基对象。你在找。同样,它对于查找特定的属性子集非常有用,但完全隐藏了所有其他属性。

    祝你好运,狩猎愉快。