【问题标题】:Using DebuggerDisplayAttribute for property/field将 DebuggerDisplayAttribute 用于属性/字段
【发布时间】:2016-06-15 17:21:46
【问题描述】:

我有一个具有标准类型属性的类。在调试器中,我希望以某种特定格式查看此特定属性。我在该特定属性上使用属性 DebuggerDisplay,但在调试器的 Watch 窗口中,我看到它应用于整个类,而不是目标属性。我错过了什么?

class Transaction : ITransaction
{
    [DebuggerDisplay("{DateAsDebugString}")]
    public DateTime Date
    {
        get;set;
    }

    string DateAsDebugString
    {
        get
        {
            var res = Date.ToShortDateString();
            if (Date.TimeOfDay != TimeSpan.Parse("00:00"))
                res += " " + Date.TimeOfDay.ToString();
            return res;
        }
    }

}

如何应用属性级调试器格式化/可视化规则?

【问题讨论】:

  • 能否尝试在班级级别添加测试DebuggerDisplayAttribute,看看是否生效?类似[DebuggerDisplay("Testing")]
  • 我刚刚在我目前打开的项目中做了一个快速测试,得到的结果和你一样。从我在 MSDN 上阅读的内容来看,这是正确的用法;我有点困惑为什么它没有像我们预期的那样工作。
  • 是的,类级别属性会覆盖字段级别。它为每个类实例显示“测试”,属性仍然被忽略
  • 我在类和属性级别应用属性的结果有点不同。我看到类级别属性被完全忽略,并且属性级别 1 显示为好像它已应用于类级别(与屏幕截图中的相同)。我很想说这是 Visual Studio 中的一个错误。
  • 所以即使这种行为也是不一致的。我仔细检查了-如果类级别属性存在,则显示其值,否则显示类中第一个字段/属性级别属性的值

标签: .net debugging visual-studio-debugging


【解决方案1】:

这似乎是 Visual Studio 2015 中的一个错误,如 here 所述。不幸的是,它似乎从未被修复过。

Visual Studio 2013 中的相同代码产生预期结果。

【讨论】:

  • 六年后,一切都没有改变,同样的事情仍然发生在 VS 2022 上
猜你喜欢
  • 2010-11-07
  • 2011-03-05
  • 1970-01-01
  • 2011-07-31
  • 1970-01-01
  • 1970-01-01
  • 2013-07-18
  • 2010-11-30
相关资源
最近更新 更多