C# 如何创建VisualStudio字符串可视化工具?

C# 如何创建VisualStudio字符串可视化工具?,c#,vb.net,visual-studio-2008,debuggervisualizer,C#,Vb.net,Visual Studio 2008,Debuggervisualizer,我试图为IDictionary或ICollection创建一个可视化工具 然后像简单的可视化工具一样(没有对话框;我指的是鼠标悬停变量时出现的常用字符串可视化工具,请参见下图),我希望生成自定义文本,我希望将集合强制转换为其类型的列表(即StringCollection to list(Of string)或list),然后我将能够在可视化工具中看到它。 或对于字典,显示为列出键和值的可视化工具 有没有关于如何实施甚至如何开始的想法 我将很快更新我的问题 这是我想到的: using System

我试图为IDictionary或ICollection创建一个可视化工具

然后像简单的可视化工具一样(没有对话框;我指的是鼠标悬停变量时出现的常用字符串可视化工具,请参见下图),我希望生成自定义文本,我希望将集合强制转换为其类型的列表(即StringCollection to 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;
        }
    }
}
使用System.Collections.Specialized;
使用系统集合;
命名空间控制台应用程序2
{
静态类程序
{
静态void Main(字符串[]参数)
{
System.Collections.Specialized.StringCollection collection=新建StringCollection();
AddRange(新字符串[]{“string1”、“string2”、“sting3”});
string[]visualizable=collection.ConvertToVisualizableList();
字典dic=新字典
{
{“key1”,“value”},
{“键2”,“值”}
};
字符串[,]visualizable2=dic.ConvertToVisualizableDictionary();
}
静态字符串[]ConvertToVisualizableList(此IList集合)
{
锁(集合)
{
if(collection==null)返回null;
int length=collection.Count;
字符串[]列表=新字符串[长度];
for(int i=0;i
这些是用于阵列和多维阵列的VS可视化工具:

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

注意,在数组中,可视化工具显示每个嵌套对象集。 这正是我想要实现的目标

尝试可视化列表,您将看到有一个私有值\u items,因此您可以看到它的项。
我想在collection和dictionary中实现类似的功能。

在代码项目中有许多示例。这是我最有经验的一个:

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

这里还有几个其他链接要查看:


关于代码项目,有很多例子。这是我最有经验的一个:

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

这里还有几个其他链接要查看:


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


,但它仍然不会显示对象。

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


,但它仍然不会显示对象。

实际上,我想要的是控制字符串出现的区域,我希望这应该成为可视化工具的一个位置,这可能吗?我知道可视化工具API是广泛而强大的,但你必须动手。上面的三个链接中有没有任何一个看起来与您希望可视化工具的操作方式非常接近?我会挑一个带着它跑。有几十篇来自谷歌基本搜索的文章:这篇来自Dobb博士的文章看起来特别有希望:非常感谢,非常有用!如果/当我将创建可视化工具时,我将在这里发布它!太棒了,希米。期待着,这是个问题。我希望我能在我的可视化工具中嵌套一个vs可视化工具,因为我只想为ICollection定义我的可视化工具,我更希望为ICollection定义它,并使用vs的可视化工具,它应该分别为每个项目工作。有没有一种方法实际上我想要的是控制字符串出现的区域,我想这应该成为可视化工具的一个地方,这可能吗?我知道可视化工具API是广泛和强大的,但你必须要弄脏你的手。上面的三个链接中有没有任何一个看起来与您希望可视化工具的操作方式非常接近?我会挑一个带着它跑。有几十篇来自谷歌基本搜索的文章:这篇来自Dobb博士的文章看起来特别有希望:非常感谢,非常有用!如果/当我将创建可视化工具时,我将在这里发布它!太棒了,希米。期待着,这是个问题。我希望我能在我的可视化工具中嵌套一个vs可视化工具,因为我只想为ICollection定义我的可视化工具,我更希望为ICollection定义它,并使用vs的可视化工具,它应该分别为每个项目工作。有办法吗