我使用网格创建了表单,以显示任何集合(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在调试中不提供可视化工具。
如果我指定了exactl类名,则可视化器在VS中可用。有没有办法,如何实现我的意图或者没有办法,如何实现呢?
谢谢!
答案 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" )]