前言:
最近飞机失联的太多,明天要飞北京处理服务器双机热备的问题,航空保险已买,单号是:TF10122913。
至于我的银行卡密码,在我枕头下面的字条里,要是我之后没再更新文章,请通知我家人,哈哈哈哈。
好了,Joke 被 Play 后,下面 Enter 正文。
背景:
话说:使用CYQ.Data时,会经常断点MDataTable的对象,为了查看表格的数据内容,在监视里会常ToDataTable(),然后借可DataTable的可视化方式查看表格。
近日:心中莫名就来了一句话,不转行不行?狠想直接看MDataTable的对象,Like This:
于是经过一翻小研究,就有了下面的内容。
1:什么是:可视化调试工具(Microsoft.VisualStudio.DebuggerVisualizers)
用文字描述显的太无力,我直接上图,很直观:
A:对字符串的可视化调试展示:
B:对DataSet、DataTable系列的可视化展示:
如上图,简单一句话总结一下就是:对指定某种类型的可视化插件展示。
2:怎么实现:可视化调试工具(Microsoft.VisualStudio.DebuggerVisualizers)
不说你以为很复杂,一说其实简单的要命,这里对图片System.Draw.Image进行示例,最终效果如下图:
下面跟着我一起来:
步骤一:新建个项目=》类库=》添加一个类。
步骤二:引用:Microsoft.VisualStudio.DebuggerVisualizers
步骤三:输入以下代码:
using System;
using System.Drawing;
using System.Windows.Forms;
[assembly: System.Diagnostics.DebuggerVisualizer(
typeof(CYQ.Visualizer.ImageVisualizer),
typeof(VisualizerObjectSource),
Target = typeof(System.Drawing.Image),
Description = "Image Visualizer")]
namespace CYQ.Visualizer
{
public class ImageVisualizer : DialogDebuggerVisualizer
{
override protected void Show(IDialogVisualizerService windowService, IVisualizerObjectProvider objectProvider)
{
Image image = (Image)objectProvider.GetObject();
Form form = new Form();
form.Text = string.Format("Width: {0}, Height: {1}", image.Width, image.Height);
form.ClientSize = new Size(image.Width, image.Height);
form.FormBorderStyle = FormBorderStyle.FixedToolWindow;
PictureBox pictureBox = new PictureBox();
pictureBox.Image = image;
pictureBox.Parent = form;
pictureBox.Dock = DockStyle.Fill;
windowService.ShowDialog(form);
}
}
}
然后编绎成功后变成一个Xxx.dll,就OK了。
简单的说明一下代码流程:
1:新建一个类,叫XXXX,需要继承自:DialogDebuggerVisualizer
2:重写方法Show(有两个参数)
3:代码里,第一行:objectProvider.GetObject() 返回你要处理的类的实体的拷贝,你进行一下类型转换就可以了。
这里说明一下,要处理的必须是序列化的。
4:最后一行: windowService.ShowDialog(控件);就是展示呈现一个控件了,通常我们用Form来显示。
5:中间那一块,就是我们自定要的呈现了,自己要写的东西也就是这些了,学点Winform知识你就会了。
6:最后一步,指定要被插件反射用的程序集信息: 上面有三个typeof
第一个typeof(就是那个XXXX类) 第二个typeof(按示例不用管,除非你需要自定义自己的序列化) 第三个typeof(你要可视化呈现的类)
3:如何部署:可视化调试工具(Microsoft.VisualStudio.DebuggerVisualizers)
一句话,把那个Xxx.dll放到以下目录:VS安装目录\Microsoft Visual Studio XXX\Common7\Packages\Debugger\Visualizers
然后就自动生效了,当你调试时,会被加载,进而呈现你的那个效果。
4:源码下载及说明
对于不同的VS(2005、2008、2012、2015),你需要编绎不同的版本,主要是引用的:Microsoft.VisualStudio.DebuggerVisualizers 这个版本不一样。
下载地址:https://www.cnblogs.com/cyq1162/p/6027051.html
版权声明:本文原创发表于 博客园,作者为 路过秋天 本文欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。 |
个人微信公众号![]() |
Donation(扫码支持作者):支付宝:![]() |
Donation(扫码支持作者):微信:![]() |
![]() |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
2011-06-05 CYQ.Data 数据框架 V5 的语法糖 外置开源原理解析 [类似lambda表达式]
2010-06-05 关于用飞信框架运行net程序-用批处理运行