Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >为类创建自定义调试信息,让你的调试更加方便快捷

为类创建自定义调试信息,让你的调试更加方便快捷

作者头像
hbbliyong
发布于 2019-07-02 10:24:54
发布于 2019-07-02 10:24:54
60000
代码可运行
举报
文章被收录于专栏:hbbliyonghbbliyong
运行总次数:0
代码可运行

我们在应用程序中使用类一组类,你想在调试器中快速查看类中的值。默认情况下调试器不会展示自定义类的信息。

此时我们可以向类添加一个DebuggerDisplay的特性。此时调试器就会你想要显示的信息。如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   [DebuggerDisplay("User Full Name={Id} {Name} {Age}")]
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    public class User
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    {
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        public int Id { get; set; }
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        public string Name { get; set; }
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        public int  Age { get; set; }
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    }

测试:

代码语言:javascript
代码运行次数:0
运行
复制
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
     static void Main(string[] args)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        {
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
            List<User> users = new List<User>();
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
            users.Add(new User() { Id = 1, Name = "张三", Age = 10 });
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
            users.Add(new User() { Id = 2, Name = "李四", Age = 11 });
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
            var otherUsers = users;
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
            List<string> list = new List<string>();
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        }

看下显示效果:

没加特性的效果是这样的:

当然你如果嫌上述要将一个个的属性都写上有点麻烦,DebuggerDisplay特性还可以直接访问this指针,但是使用this指针访问的任何属性在处理前都不会对属性的特性进行求值。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 [DebuggerDisplay("User Full Name={this}")]
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    public class User
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    {
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        public int Id { get; set; }
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        public string Name { get; set; }
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        public int  Age { get; set; }
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    }

当然上述方式,你需要重写了ToString方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 public override string ToString()
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        {
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
            return $"{Id} {Name} {Age}";
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        }

如果通过上述方式你 没有获取你需要的值,你只需要工具->选项->调试,然后勾选箭头所指向:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-06-03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
C#/.NET 调试的时候显示自定义的调试信息(DebuggerDisplay 和 DebuggerTypeProxy)
使用 Visual Studio 调试 .NET 程序的时候,在局部变量窗格或者用鼠标划到变量上就能查看变量的各个字段和属性的值。默认显示的是对象 ToString() 方法调用之后返回的字符串,不过如果 ToString() 已经被占作它用,或者我们只是希望在调试的时候得到我们最希望关心的信息,则需要使用 .NET 中调试器相关的特性。
walterlv
2020/02/10
1.4K0
java——List列表结构的复杂排序
这种列表数据的类型是List<Intger>和List<String>,是简单的数据类型。 可以使用以下的方法排序。
不愿意做鱼的小鲸鱼
2022/09/26
1.1K0
java——List列表结构的复杂排序
设计模式---适配器模式
在真实的开发场景中,系统的每个模块都是分配给不同的团队或个人来开发的。这使得事前沟通变得尤为重要,且沟通问题也时有发生。现在公司有两个模块无法兼容,难道只能重写其中的一个吗?
技术文章精选
2022/11/08
2360
VisualStudio 在 DebuggerDisplay 的属性更改业务逻辑将会让调试和非调试下逻辑不同
本文记录我写的逗比代码,我在 DebuggerDisplay 对应的属性的 get 方法上,在这个方法里面修改了业务逻辑,如修改界面元素,此时我在 VisualStudio 断点调试下和非断点调试下的行为不相同
林德熙
2021/12/24
4830
WCF系列教程之WCF客户端调用服务
1、创建WCF客户端应用程序需要执行下列步骤 (1)、获取服务终结点的服务协定、绑定以及地址信息 (2)、使用该信息创建WCF客户端 (3)、调用操作 (4)、关闭WCF客户端对象 二、操作实例 1、
郑小超.
2018/01/26
2.2K0
WCF系列教程之客户端异步调用服务
本文参考自http://www.cnblogs.com/wangweimutou/p/4409227.html,纯属读书笔记,加深记忆 一、简介 在前面的随笔中,详细的介绍了WCF客户端服务的调用方法,但是那些操作全都是同步的,所以我们需要很长的时间等待服务器的反馈,如何一台服务器的速度很慢,所以客户端得到结果就需要很长的时间,试想一下,如果客户端是个web项目,那么客户体验可想而知,所以为了不影响后续代码执行和用户的体验,就需要使用异步的方式来调用服务。注意这里的异步是完全针对客户端而言的,与WCF服务契
郑小超.
2018/01/26
1.2K0
BindingNavigator控件[通俗易懂]
WinForm之中BindingNavigator控件的使用 在微软WinForm中,BindingNavigator控件主要用来绑定数据。可以将一个数据集合与该控件绑定,以进行数据
全栈程序员站长
2022/09/14
1.4K0
winform控件之BindingNavigator
BindingNavigator控件可以为我们绑定的数据提供一个导航的功能,默认的工具是这个样子的,我们可以根据需求再增加功能
全栈程序员站长
2022/09/14
9640
Java拖拽排序工具类「建议收藏」
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/147752.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/07
1K0
开撸!SpringBoot-表单验证-统一异常处理-自定义验证信息源
我们都知道前台的验证只是为了满足界面的友好性、客户体验性等等。但是如果仅靠前端进行数据合法性校验,是远远不够的。因为非法用户可能会直接从客户端获取到请求地址进行非法请求,所以后台的校验是必须的;特别是应用如果不允许输入空值,对数据的合法性有要求的情况下。
IT大咖说
2021/09/08
2.6K0
开撸!SpringBoot-表单验证-统一异常处理-自定义验证信息源
SpringMVC数据绑定定义支持的数据绑定方式
定义 百度百科定义: 简单绑定是将一个用户界面元素(控件)的属性绑定到一个类型(对象)实例上的某个属性的方法。 例如,如果一个开发者有一个Customer类型的实例,那么他就可以把Customer的“Name”属性绑定到一个TextBox的“Text”属性上。“绑定”了这2个属性之后,对TextBox的Text属性的更改将“传播”到Customer的Name属性,而对Customer的Name属性的更改同样会“传播”到TextBox的Text属性。 支持的数据绑定方式 SpringMVC的各种参数包括对
JavaEdge
2018/04/28
5.7K0
SpringMVC数据绑定定义支持的数据绑定方式
_SpringBoot自带模板引擎Thymeleaf使用详解②
thymeleaf将遍历的状态变量封装到一个对象中,通过该对象的属性可以获取状态变量:
会洗碗的CV工程师
2023/11/17
1990
_SpringBoot自带模板引擎Thymeleaf使用详解②
C# List去重的三种方法「建议收藏」
1、List中的元素实现IEquatabe接口,并提供Equals方法和GetHashCode方法。
全栈程序员站长
2022/09/01
7.3K0
C# List去重的三种方法「建议收藏」
Lambda【1】-- List相关Lambda表达式使用(上篇)
Lambda在jdk1.8里面已经很好用了,在这里不讲底层的实现,只有简单的用法,会继续补全。
秦怀杂货店
2020/12/26
9630
WCF系列教程之WCF客户端异常处理
本文参考自:http://www.cnblogs.com/wangweimutou/p/4414393.html,纯属读书笔记,加深记忆 一、简介 当我们打开WCF基础客户通道,无论是显示打开还是通过调用操作自动打开、使用客户端或者通过对象调用操作,或者关闭基础客户端通道,都会在客户端应用程序中出现异常,WCF是基于网络的通讯服务,错误异常也是要基于消息传递的,在WCF中提供了一个错误消息处理的类FaultException,WCF客户端可以通过它,来接收服务端传递回来的异常信息。 二、WCF异常类型 1、
郑小超.
2018/01/26
1.2K0
WCF系列教程之WCF中的会话
本文参考自http://www.cnblogs.com/wangweimutou/p/4516224.html,纯属读书笔记,加深记忆 一、WCF会话简介 1、在WCF应用程序中,回话将一组消息相互关联,从而形成一个回话(回话可以理解为一段时间内的通话,有开始,有结束),会话是服务端和客户端的终结点在在开始回话和结束回话这段时间内的所有消息的一个集合。 2、WCF中的回话机制通过设置服务协定ServiceContract上的SessionMode的枚举值来设置服务协定是否要求、允许或者拒绝基于回话的绑定.枚
郑小超.
2018/01/26
9380
Lkadoc操作指南
Lkadoc是一款开源的接口文档自动生成工具,基于SpringBoot平台,拥有非常强大的接口文档管理功能。为解决Java后台开发人员编写接口文档、调试接口而生。同时提供了简洁、大气、功能丰富的接口文档UI操作界面,方便后端与前端之间的接口对接。
花落花相惜
2021/11/25
8050
练习2-自定义比较器
  1 )请设计出 person 类,具有姓名、年龄和身高属性。   2 )在 PersonSort 类中,使用集合和泛型存储多个 Person对象
sr
2018/08/20
3850
jfinal自定义freemarker标签
jfinal自定义freemarker标签 ---- 1. config修改freemarkerrender public void afterJFinalStart() { super.afterJFinalStart(); FreeMarkerRender.getConfiguration().setSharedVariable("bitch",new LabelDirective()); } 2.添加对应的标签方法实现
冷冷
2018/02/08
6790
Java泛型入门介绍--自定义泛型类\方法\通配符的问题
下面的这个只展示了我们的main方法里面的内容,实际上这个java文件里面还进行了这个cat,dog类的定义,我们想要对于这个狗的名字进行打印,然后加上这个狗的年龄;
阑梦清川
2025/02/24
1780
Java泛型入门介绍--自定义泛型类\方法\通配符的问题
推荐阅读
相关推荐
C#/.NET 调试的时候显示自定义的调试信息(DebuggerDisplay 和 DebuggerTypeProxy)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验