DebuggerDisplay属性无法按预期工作!

mar*_*ark 4 debugging visual-studio-2008 debuggerdisplay

我知道这个属性应该在C#中起作用,但在我的情况下却没有.我有一个懒惰的孩子班级.访问此属性可能会产生向服务器往返的副作用.因此,当我在调试器观察窗口中观看时,我不希望发生这种情况.

省略所有不相关的细节,源代码看起来非常普通:

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

然而,当我观察对象并this在观察窗口中展开时,我在显示中看不到(冻结),这意味着调试器只是忽略该属性.

如果图像链接仍然有效,则应在下面显示:http : //i28.tinypic.com/2zxo9s5.jpg DebuggerDisplay image snapshot http://i28.tinypic.com/2zxo9s5.jpg

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

有任何想法吗?

Pau*_*ulS 5

如果您在观察窗口中看到以下内容:

[+]  ObjectName    | { namespace.object}
Run Code Online (Sandbox Code Playgroud)

确保选中"工具 - >选项 - >调试 - >常规 - >显示变量窗口中对象的原始结构".

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