任何ICollection和ICollection <t>类型的调试器可视化器</t>

时间:2011-06-28 13:00:30

标签: visual-studio debugging debuggervisualizer

我使用网格创建了表单,以显示任何集合(ICollectionICollection<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在调试中不提供可视化工具。

如果我指定了exactl类名,则可视化器在VS中可用。有没有办法,如何实现我的意图或者没有办法,如何实现呢?

谢谢!

2 个答案:

答案 0 :(得分:9)

我认为您偶然发现了与outlined in this question.

相同的展示台架构限制

解决方法是为System.WeakReference创建一个Visualizer,然后在Watch窗口中键入“new WeakReference(myCollectionVariable)”,然后您就可以在弱引用上打开调试可视化工具。在调试可视化工具中,您可以使用反射来找出变量的确切类型,并根据需要执行任何操作。

另见this

答案 1 :(得分:0)

我猜这会很好。

[assembly: DebuggerVisualizer( typeof( DebugerSide ), typeof( VisualizerObjectSource ), typeof(Collection), Description = "Collection visualizer" )]