在VS中检查时,以何种方式使对象的属性以特定顺序出现?

时间:2017-02-15 08:25:30

标签: c# .net visual-studio visual-studio-debugging

我有一个遗留项目,我经常可以看到具有多达100个属性的模型类,而在调试时我希望按特定顺序查看它们,因为它是一个有序的数据序列。是否有任何类型的属性可以使Visual Studio调试器以特定顺序显示它们而不是按名称对它们进行排序?

2 个答案:

答案 0 :(得分:1)

您可以使用 DebuggerDisplayAttribute 类来自定义调试器说明。请在MSDN中了解相关信息。

如果将该属性附加到某个类,则可以定义在调试期间查看描述的方式。

来自MSDN的一个例子。调试期间,valuekey会更加明显:

[DebuggerDisplay("{value}", Name = "{key}")]
internal class KeyValuePairs
{
    private IDictionary dictionary;
    private object key;
    private object value;

    public KeyValuePairs(IDictionary dictionary, object key, object value)
    {
        this.value = value;
        this.key = key;
        this.dictionary = dictionary;
    }
}

在调试过程中,更容易看到值和键。

您可以考虑使用 DebuggerBrowsableAttribute 来确定调试器显示某些成员的内容。你甚至可以隐藏一些成员。

以下是DebuggerBrowsableAttribute的一些示例:

public class User
{
    [DebuggerBrowsable(DebuggerBrowsableState.Collapsed)]
    public string Login { get; set; }

    [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)]
    public FullName Name { get; set; }

    [DebuggerBrowsable(DebuggerBrowsableState.Never)]
    public string HashedPassword { get; set; }
}

如您所见,属性HashedPassword将无法进行调试。

此外,您可以在Visual Studio中使用Watch窗口并配置要跟踪的变量。

答案 1 :(得分:0)

您可以使用DebuggerDisplay属性来控制数据在工具提示中的显示方式,例如调试。

[DebuggerDisplay("Age = {Age}, Name = '{Name}'")]
public class Person
{
    public string Name { get; set; }

    public int Age { get; set; }
}

供参考: