0

我创建了一个继承Dictionary<string, string>并重写方法的类,ToString()以便于调试(在 Watch 窗口中查看此类实例的状态)。如果我在控制台上显示这种类型,一切正常:

在控制台中显示从 Dictionary<string, string> 继承的自定义类型

但是好像Visual Studio还是用原来ToString()的type方法Dictionary<string, string>

在 Watch 窗口中显示继承自 Dictionary<string, string> 的自定义类型

这个事实使我的代码调试变得非常复杂,因为我无法快速看到该类型字段的所需值。

如何强制 Visual Studio 使用我的方法ToString(),而不是类型的方法Dictionary<string, string>

using System;
using System.Collections.Generic;

namespace TestDictionary
{
    class Program
    {
        static void Main(string[] args)
        {
            CmdValue innerCmdVal = new CmdValue("InnerName", null);
            CmdValue cmdVal = new CmdValue("name1", innerCmdVal);
            cmdVal.Add("key1", "value1");
            Console.WriteLine(cmdVal);
            Console.ReadKey();
        }
    }

    class CmdValue : Dictionary<string, string>
    {
        public readonly string Name;
        public readonly CmdValue InnerCmdValue;

        public CmdValue(string name, CmdValue innerCmdValue)
        {
            this.Name = name;
            this.InnerCmdValue = innerCmdValue;
        }

        public override string ToString()
        {
            string str = string.Format("{0}[{1}].{2}", this.Name, this.Count, this.InnerCmdValue);
            return str;
        }
    }
}
4

1 回答 1

1

您正在寻找DebuggerDisplayAttribute

例子:

[DebuggerDisplay("Name: {LastName}, {FirstName}")]
public class Customer
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

如果您创建名为 Bill Clinton 的客户,调试器窗口将显示“姓名:Clinton,Bill”作为值。

于 2013-09-12T13:12:00.617 回答