0

我在一个进行大量继承的框架中工作,我发现一个基类的 Natvis 会干扰另一个基类。

这是一个愚蠢的例子:

class MainBase {};
class ExtraBase {};
class Derived: MainBase, ExtraBase {};

有了这个 natvis:

<Type Name="MainBase">
  <Expand>
    <Item Name="MainBaseItem">23</Item>
  </Expand>
</Type>

<Type Name="ExtraBase">
  <Expand>
    <Item Name="ExtraBaseItem">42</Item>
  </Expand>
</Type>

...我明白了: https ://i.stack.imgur.com/0dMNu.png

在此处输入图像描述

MainBaseItem 的扩展显示良好,但 ExtraBaseItem 的扩展无处可见。

在我的实际情况中,MainBase 等效项的 natvis 非常重要,因此我无法通过添加Inheritable="false"来解决问题。为派生类本身添加专门的 natvis 也是不切实际的——派生类有数千个。鉴于这些无益的限制,我能做些什么来让 ExtraBaseItem 出现吗?

4

1 回答 1

0
<Type Name="ExtraBase">
  <Expand>
    <!-- Example of hierarchical class shown below-->
    <Item Name="MainBaseItem [base]">(MainBaseItem*)this</Item>
  </Expand>
</Type>

如果我理解正确的话,我想知道......

于 2018-07-11T17:09:24.610 回答