我知道这个属性应该在C#中工作,但在我的情况下,它不会。 我有一个有懒人属性的类儿童。访问此属性可能会带来往返服务器的副作用。所以,当我在调试器监视窗口中观看时,我不希望发生这种情况。DebuggerDisplay属性不能按预期工作!
省略所有无关的细节源看起来很普通:
[DebuggerDisplay("(Frozen) {m_children}")]
public IList<IEntityBase> Children
{
get
{
if (m_children == null)
{
m_children = FetchChildrenFromDB(this);
}
return m_children;
}
}
然而,当我看的对象,并在监视窗口中我没有看到(冻结)在显示扩大this
,这意味着调试器只是忽略该属性。
提供的图像链接仍然是有效的,应该是下清晰可见: http://i28.tinypic.com/2zxo9s5.jpg DebuggerDisplay image snapshot http://i28.tinypic.com/2zxo9s5.jpg
属性是真的存在,根据反射器。我使用VS2008。
任何想法?
您是否检查过您没有无意中引入了您自己的DebuggerDisplay属性,可能是因为某些调试问题? – 2009-08-19 19:42:37
如果这是某些ORM实现的一部分,ORM框架是否可以创建围绕实际对象的填充层来实现可观察属性?我已经看到了这些事情发生,在这种情况下,对象的类型与您的源代码不匹配。你能否检查一下你在源代码中的确切类型? – 2009-08-19 19:47:11
该代码是客户端代码。在那边没有使用ORM。我们在服务器端使用NHibernate,但客户端完全脱离它。我相信这不是一个垫脚石。 – mark 2009-08-19 20:09:42