所以,说我有两个类,C和B,它们有组合关系,C由B组成。
struct C
{
};
struct B
{
C c;
};
现在,我有一个有2个C视图的natvis文件。我必须将此视图从B显式传播到C吗?这听起来很麻烦,因为natvis文件没有说明正在显示的类型,导致我希望该视图传播的丢失位置。此外,这对容器不起作用。我只能查看单个项目。
修改
示例:
<?xml version="1.0" encoding="utf-8"?>
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
<Type Name="C">
<DisplayString>View 1</DisplayString>
</Type>
<Type Name="C" IncludeView="two">
<DisplayString>View 2</DisplayString>
</Type>
<Type Name="B">
<DisplayString>B</DisplayString>
<Expand>
<Item Name="C">c</Item>
</Expand>
</Type>
</AutoVisualizer>
现在在观察窗口中,我查看b
类型的变量B
。为了看到它,我输入:
b, view(two)
我期望视图传播到c
的视图。但它并没有。它会显示:
c View 1
无需写:
<Type Name="B">
<DisplayString>B</DisplayString>
<Expand>
<Item Name="C" ExcludeView="two">c</Item>
<Item Name="C" IncludeView="two">c</Item>
</Expand>
</Type>
我将如何做到这一点?
答案 0 :(得分:0)
不幸的是,您不能将视图类型传递给嵌套元素。即使是你的例子
<Type Name="B">
<DisplayString>B</DisplayString>
<Expand>
<Item Name="C1" ExcludeView="two">c</Item>
<Item Name="C2" IncludeView="two">c</Item>
</Expand>
</Type>
它无法正常工作:
您必须添加, view(two)
才能获得正确的视图:
<Type Name="B">
<DisplayString>B</DisplayString>
<Expand>
<Item Name="C1" ExcludeView="two">c</Item>
<Item Name="C2" IncludeView="two">c, view(two)</Item>
</Expand>
</Type>