Mig*_*MoS 14 c# debugging visual-studio-2008-sp1 visual-studio-2008 visual-studio
我有一个继承自a的类List<MagicBean>.除了一个:当我添加[DebuggerDisplay]属性时,它在所有方面都运行良好且符合预期.即使看着List有它[DebuggerDisplay("Count = {Count}")],如果我将它复制并粘贴到我的身上,我也无法直接查看我所有的MagicBeans而无需在调试时钻入base-> private成员.
我如何充分利用这两个世界?IE:值列中的自定义值,Visual Studio没有隐藏我的魔豆?
adr*_*nks 11
您可以使用DebuggerTypeProxy属性获得所需的效果.您需要创建一个类来对您继承的列表进行调试"可视化":
internal sealed class MagicBeanListDebugView
{
private List<MagicBean> list;
public MagicBeanListDebugView(List<MagicBean> list)
{
this.list = list;
}
[DebuggerBrowsable(DebuggerBrowsableState.RootHidden)]
public MagicBean[] Items{get {return list.ToArray();}}
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以声明此类以供调试器用于显示您的类以及DebuggerDisplay属性:
[DebuggerDisplay("Count = {Count}")]
[DebuggerTypeProxy(typeof(MagicBeanListDebugView))]
public class MagicBeanList : List<MagicBean>
{}
Run Code Online (Sandbox Code Playgroud)
当您将鼠标悬停在Visual Studio中的继承列表实例上时,这将为您提供"Count = 3"消息,并在展开根节点时显示列表中项目的视图,而无需深入查看基本属性.
使用ToString()来专门获取调试输出并不是一个好方法,除非你已经ToString()在其他地方的代码中使用了,在这种情况下你可以使用它.
| 归档时间: |
|
| 查看次数: |
2794 次 |
| 最近记录: |