visual-studio-2008 - DebuggerDisplay 属性未按预期工作

标签 visual-studio-2008 debugging debuggerdisplay

我知道这个属性应该在 C# 中工作,但在我的情况下它没有。
我有一个带有懒惰属性 child 的类。访问此属性可能会产生往返服务器的副作用。所以,自然地,当我只是在调试器观察窗口中观察它时,我不希望发生这种情况。

省略所有不相关的细节,源看起来很普通:

[DebuggerDisplay("(Frozen) {m_children}")]
public IList<IEntityBase> Children
{
  get
  {
    if (m_children == null)
    {
      m_children = FetchChildrenFromDB(this);
    }
    return m_children;
  }
}

然而,当我观察对象并展开 this 时在监视窗口中,我没有在显示中看到 (Frozen),这意味着调试器只是忽略了该属性。

DebuggerDisplay image snapshot

根据 Reflector 的说法,该属性确实存在。我用的是VS2008。

有任何想法吗?

最佳答案

如果您在监视窗口中看到以下内容:

[+]  ObjectName    | { namespace.object}

确保 “工具->选项->调试->常规->在变量窗口中显示对象的原始结构”未检查。

一旦我清除了这个,我的 DebuggerDisplay 属性就会正确显示(包括显示我添加的所有“WTF”和“Huh”......)

关于visual-studio-2008 - DebuggerDisplay 属性未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1302034/

相关文章:

c# - Visual Studio : [DebuggerDisplay], 在指定格式时显示 "not a valid format specifier"

visual-studio-2008 - marshal_as、字符串和字段与属性

asp.net - "__o"在执行 ASP.NET 的 Visual Studio 2008 中未声明

c - 如何检测我的应用程序在 Linux 中崩溃的位置

c# - 在 PropertyGrid C# 中显示 DebuggerDisplay

c# - 在 [DebuggerDisplay] 属性中使用扩展方法

visual-studio-2008 - 可以使用 Visual Studio IDE 构建,但无法使用 devenv.com 构建

c++ - 在这种情况下如何防止代码崩溃

multithreading - 在 CLion 中调试多线程 C++ 应用程序

c - 如何知道一个c程序的堆栈溢出?