You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让自定义类在Visual Studio调试器中显示带View按钮的字符串可视化器

实现方法

要让自定义类在Visual Studio调试时获得和原生string类型完全一致的展示效果(保留换行、显示文本可视化器「View」按钮),仅添加[DebuggerDisplay("{ToString()}")]是不够的,你可以选择以下任意一种方案配置,不需要修改原有业务逻辑:


方案1:无额外依赖的调试代理实现

不需要引用任何Visual Studio相关的调试扩展程序集,仅通过.NET框架自带的调试特性即可实现:

  1. 保留你已经添加的[DebuggerDisplay("{ToString()}")]特性
  2. 给类追加[DebuggerTypeProxy]特性,指向一个私有的调试代理类,代理类暴露一个string类型的属性返回ToString()的结果,调试器识别到字符串类型的调试根目标后,会自动关联内置文本可视化器,显示「View」按钮。

完整示例代码:

using System.Diagnostics;

// 保留原有DebuggerDisplay特性
[DebuggerDisplay("{ToString()}")]
// 追加调试类型代理特性
[DebuggerTypeProxy(typeof(CustomStringBuilderDebugProxy))]
public class YourCustomStringBuilder
{
    // 类内原有业务逻辑保持不变
    public override string ToString()
    {
        // 你原有的生成最终输出字符串的逻辑
    }

    /// <summary>
    /// 调试专用代理类,不需要对外暴露
    /// </summary>
    private sealed class CustomStringBuilderDebugProxy
    {
        private readonly YourCustomStringBuilder _target;
        public CustomStringBuilderDebugProxy(YourCustomStringBuilder target)
        {
            _target = target;
        }

        /// <summary>
        /// 字符串类型的返回值会被调试器自动识别,关联文本可视化器
        /// </summary>
        public string Value => _target.ToString();
    }
}

方案2:直接绑定内置字符串可视化器

如果你的项目可以引入Visual Studio调试可视化器相关的程序集,可以直接给类显式绑定系统自带的字符串可视化器,效果和原生字符串完全一致:

  1. 给项目添加Microsoft.VisualStudio.DebuggerVisualizers程序集的引用
  2. 在类上追加[DebuggerVisualizer]特性,指定使用内置的StringVisualizer

完整示例代码:

using System.Diagnostics;
using Microsoft.VisualStudio.DebuggerVisualizers;

[DebuggerDisplay("{ToString()}")]
// 显式指定使用系统内置的字符串可视化器
[DebuggerVisualizer(typeof(StringVisualizer))]
public class YourCustomStringBuilder
{
    // 类内原有业务逻辑保持不变
    public override string ToString()
    {
        // 你原有的生成最终输出字符串的逻辑
    }
}

配置完成后重新编译项目,再次调试时,在局部变量窗口、监视窗口或者鼠标悬停查看类实例时,就会和原生string类型完全一致:内容正常保留换行格式,右侧出现可打开文本可视化器的「View」按钮。

内容的提问来源于stack exchange,提问作者Rick de Water

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 04:21:32