如何创建Visual-Studio字符串可视化工具?

时间:2009-08-18 14:25:51

标签: c# vb.net visual-studio-2008 debuggervisualizer

我正在尝试为IDictionary或ICollection创建一个可视化工具

然后就像简单的可视化器(没有对话框;我的意思是在悬停变量时出现的因子字符串可视化器,见下图),我想制作我的自定义文本,我想将集合转换为其类型列表(IE StringCollection到List(Of String)或List)然后我将能够在可视化工具中看到它。 或者为词典显示列出键和值的可视化器。

任何想法如何实施甚至如何开始?

我会尽快更新我的问题。

这是我想到的:

using System.Collections.Specialized;
using System.Collections;

namespace ConsoleApplication2
{
    static class Program
    {
        static void Main(string[] args)
        {
            System.Collections.Specialized.StringCollection collection = new StringCollection();
            collection.AddRange(new string[] { "string1", "string2", "sting3" });
            string[] visualizable = collection.ConvertToVisualizableList();

            Dictionary<string,string> dic = new Dictionary<string,string>
            {
              {"key1","value"},
              {"key2","value"}
            };
            string[,]      visualizable2 = dic.ConvertToVisualizableDictionary();



        }

        static string[] ConvertToVisualizableList(this IList collection)
        {
            lock (collection)
            {
                if (collection == null) return null;
                int length = collection.Count;
                string[] list = new string[length];

                for (int i = 0; i < length; i++)
                {
                    object item = collection[i];
                    if (item != null) list[i] = item.ToString();
                }

                return list.ToArray();
            }
        }

        static string[,] ConvertToVisualizableDictionary(this IDictionary dictionary)
        {
            if (dictionary == null) return null;
            int length = dictionary.Count;
            string[,] list = new string[length, 2];

            int i = 0;
            foreach (object item in dictionary.Keys)
            {
                list[i, 0] = item.ToString();
                object value = dictionary[item];
                if(value!=null) list[i, 1] = value.ToString();
                i++;
            }
            return list;
        }
    }
}

这些是用于数组和多维数组的VS可视化器:

alt text

我想对ICollection(或IList),IDictionary等使用类似的东西。

请注意,在数组中,可视化工具显示每个嵌套的objcet。 这实际上就是我想要实现的目标

d

尝试可视化列表,您将看到有一个私有值_items,因此您可以看到它的项目。 我想在集合和字典中实现类似的东西。

2 个答案:

答案 0 :(得分:1)

Code Project上有很多例子。这是我最有经验的人:DataSet Visualizer

我已经安装并自己使用它,所以我知道它有效。是否比您需要的更高级,因为它实际上显示整个ADO数据集,但代码应该很容易修改。

以下是其他几个要查看的链接:

Project 1

Project 2

答案 1 :(得分:0)

我发现了一些已存在的东西:

http://www.codeproject.com/KB/macros/ListVisualizer.aspx,但它仍然不会显示对象。