我知道这个属性应该在 C# 中工作,但在我的情况下它没有。
我有一个带有懒惰属性 child 的类。访问此属性可能会产生往返服务器的副作用。所以,自然地,当我只是在调试器观察窗口中观察它时,我不希望发生这种情况。
省略所有不相关的细节,源看起来很普通:
[DebuggerDisplay("(Frozen) {m_children}")]
public IList<IEntityBase> Children
{
get
{
if (m_children == null)
{
m_children = FetchChildrenFromDB(this);
}
return m_children;
}
}
然而,当我观察对象并展开
this
时在监视窗口中,我没有在显示中看到 (Frozen),这意味着调试器只是忽略了该属性。根据 Reflector 的说法,该属性确实存在。我用的是VS2008。
有任何想法吗?
最佳答案
如果您在监视窗口中看到以下内容:
[+] ObjectName | { namespace.object}
确保 “工具->选项->调试->常规->在变量窗口中显示对象的原始结构”未检查。
一旦我清除了这个,我的 DebuggerDisplay 属性就会正确显示(包括显示我添加的所有“WTF”和“Huh”......)
关于visual-studio-2008 - DebuggerDisplay 属性未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1302034/