显示项目集合时,DebuggerDisplay被忽略

时间:2013-11-27 18:44:07

标签: c# visual-studio debugging visual-studio-2012

假设我有一个对象:

[DebuggerDisplay("Bar={bar}")]
public class Foo
{
    public String bar{get;set;}
}

当我有一个bar实例时,调试器会正确显示Bar="value of bar" 但是当我有一个Foo字典时,字典显示:

{[key, namespace.Foo]}

当我展开kvp时,我得到了预期的调试器显示字符串。

当我覆盖ToString()中的Foo并拥有Foo字典时 字典显示:

{[key, Bar="value of bar"]}

根据文档,如果ToString()属性没有覆盖它,DebuggerDisplay仅用于调试器显示...

除了单个实例外,如何让debuggerDisplay属性覆盖枚举情况下的调试器字符串?

1 个答案:

答案 0 :(得分:1)

此问题的优雅解决方案是应用DebuggerDisplay 属性为System.Collections.Generic.KeyValuePair<TKey,TValue> 通过AssemblyInfo.cs如下:

using System.Collections.Generic;
using System.Diagnostics;

[assembly: DebuggerDisplay("[Key={Key}, Value={Value}]", Target = typeof(KeyValuePair<,>))]

Source on StackoverFlow