所以,假设我有两个类,C和B,它们有一个组合关系,C是由B组成的。
struct C
{
};
struct B
{
C c;
};现在,我有一个具有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>我怎样才能做到这一点?
发布于 2020-11-19 15:10:05
不幸的是,您不能将视图类型传递给嵌套元素。即使是你的例子
<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>

https://stackoverflow.com/questions/40751732
复制相似问题