如何:编写可视化工具
更新:2007 年 11 月
本主题适用于:
版本 |
Visual Basic |
C# |
C++ |
Web Developer |
---|---|---|---|---|
速成版 |
![]() |
![]() |
仅限托管 |
![]() |
标准版 |
![]() |
![]() |
仅限托管 |
![]() |
专业团队版 |
![]() |
![]() |
仅限托管 |
![]() |
表格图例:
![]() |
适用 |
![]() |
不适用 |
![]() |
默认情况下隐藏的一条或多条命令。 |
可以为任何托管类(除 Object 或 Array 之外)的对象编写自定义可视化工具。
调试器可视化工具的结构由两部分组成:
“调试器端”在 Visual Studio 调试器中运行。调试器端代码创建并显示可视化工具的用户界面。
“调试对象端”在 Visual Studio 正在调试的进程(“调试对象”)中运行。
要可视化的数据对象(如 String 对象)存在于调试对象进程中。因此,调试对象端必须将数据对象发送到调试器端,然后调试器端可以使用您创建的用户界面进行显示。
调试器端从实现 IVisualizerObjectProvider 接口的“对象提供程序”接收要可视化的数据对象。调试对象端通过从 VisualizerObjectSource 派生的“对象源”发送数据对象。对象提供程序还可以将数据发送回对象源,这样您便能够编写可编辑并显示数据的可视化工具。可以重写此对象提供程序,以便与表达式计算器进行对话,进而与对象源进行对话
调试对象端和调试器端通过 Stream 相互通信。提供了将数据对象序列化为 Stream 以及将 Stream 反序列化为数据对象的方法。
调试对象端代码是使用 DebuggerVisualizer 属性 (DebuggerVisualizerAttribute) 指定的。
若要在调试器端创建可视化工具用户界面,必须创建从 DialogDebuggerVisualizer 继承的类,并且重写 DialogDebuggerVisualizer.Show 方法来显示界面。
可以使用 IDialogVisualizerService 通过可视化工具显示 Windows 窗体、对话框和控件。
对泛型类型的支持是有限的。只有在一个泛型类型是开放类型时,才可以为属于该泛型类型的目标编写可视化工具。此限制与使用 DebuggerTypeProxy 属性时的限制相同。有关详细信息,请参见使用 DebuggerTypeProxy 属性。
自定义可视化工具可能有安全性问题。请参见可视化工具安全注意事项。
下面的过程高度概括了创建可视化工具时所需完成的操作。有关更多详细说明,请参见 演练:用 C# 编写可视化工具。
创建调试器端
使用 IVisualizerObjectProvider 方法在调试器端获取可视化的对象。
创建一个从 DialogDebuggerVisualizer 继承的类。
重写 DialogDebuggerVisualizer.Show 方法以显示接口。使用 IDialogVisualizerService 方法将 Windows 窗体、对话框和控件显示为界面的一部分。
应用 DebuggerVisualizerAttribute,为它指定可视化工具 (DialogDebuggerVisualizer)。
创建调试对象端
应用 DebuggerVisualizerAttribute,为它指定可视化工具 (DialogDebuggerVisualizer) 和对象源 (VisualizerObjectSource)。如果省略对象源,则使用默认对象源
如果希望可视化工具能够编辑和显示数据对象,则需要重写 VisualizerObjectSource 中的 TransferData 或 CreateReplacementObject 方法。