5

我创建了带有网格的表单来可视化任何集合 ( ICollection, ICollection<T>) 对象。

之后我创建了调试器可视化类(继承自Microsoft.VisualStudio.DebuggerVisualizers.DialogDebuggerVisualizer)。

可视化器已正确安装(我在课堂上试过System.Collections.ArrayList)。

但是我无法将可视化器推广到任何ICollection/ICollection<T>类型。

我指定了属性:

[assembly: DebuggerVisualizer( typeof( DebugerSide ), typeof( VisualizerObjectSource ), Target = typeof( System.Collections.Generic.ICollection<> ), Description = "Collection visualizer" )]
[assembly: DebuggerVisualizer( typeof( DebugerSide ), typeof( VisualizerObjectSource ), Target = typeof( System.Collections.ICollection ), Description = "Collection visualizer" )]

但是 VS 在调试中不提供可视化工具。

如果我指定确切的类名,则可视化工具在 VS 中可用。有没有办法,如何执行我的意图或没有办法,如何实现?

谢谢!

4

2 回答 2

9

我认为您偶然发现了与此问题中概述的 Visualizers 架构相同的限制。

解决方法是为 System.WeakReference 创建一个 Visualizer,然后在 Watch 窗口中键入“new WeakReference(myCollectionVariable)”,然后您将能够在弱引用上打开调试可视化器。在调试可视化器中,您可以使用反射来找出变量的确切类型,并使用它做任何您想做的事情。

另请参阅

于 2011-07-11T16:01:43.780 回答
0

我猜这会很好。

[assembly: DebuggerVisualizer( typeof( DebugerSide ), typeof( VisualizerObjectSource ), typeof(Collection), Description = "Collection visualizer" )]
于 2013-04-19T09:27:12.360 回答