visual-studio - 任何 ICollection 和 ICollection<T> 类型的调试器可视化工具

标签 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 在调试中不提供可视化工具。

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

谢谢!

最佳答案

我认为您已经偶然发现了与 outlined in this question. 相同的 Visualizers 架构限制。

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

另见 this .

关于visual-studio - 任何 ICollection 和 ICollection<T> 类型的调试器可视化工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6506819/

相关文章:

vb.net - 如何获得需要托管服务的测试的代码覆盖率?

debugging - 如何查看 Go 程序测试代码的堆栈轨迹?

java - 为什么我的 Netbeans 调试器会进入注释代码行?

visual-studio - 如何使用 Nuget CLI 重现 VS2017 包管理器命令 "Update-Package -reinstall"

c++ - 输出源文件调用的函数列表

c# - Visual Studio 调试器如何决定可以使用 Text/XML/HTML Visualizer 查看哪些值?

c# - DbCommand 的自定义可视化工具

c++ - Visual Studio .natvis 文件 - 矩阵

c# - return和out参数的执行顺序

C++ MFC 调试断言失败!在静态 MFC 中