适用于任何ICollection和ICollection <T>类型的调试器可视化工具

TcK*_*cKs 5 debugging debuggervisualizer visual-studio

我创建了带有网格的表单来可视化任何集合(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" )]
Run Code Online (Sandbox Code Playgroud)

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

如果我指定了exactl类名,则可视化器在VS中可用.有办法,如何表达我的意图还是没有办法,如何实现呢?

谢谢!

Ome*_*viv 9

我认为你偶然发现了这个问题中概述的Visualizer架构的相同限制.

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

另请参见.

  • 调试器可视化器不适用于接口类型,仅适用于类(System.Array和System.Object除外).您必须指定特定的类.您可以为泛型类创建可视化工具,但支持仅限于打开泛型类型 - 如以下所述:http://msdn.microsoft.com/en-us/library/e2zc529c.aspx (3认同)