我试图为 IDictionary 或 ICollection 创建可视化工具
然后像简单的可视化器(没有对话框;我的意思是悬停变量时出现的常用字符串可视化器,见下图),我想制作我的自定义文本,我想将集合转换为它的类型列表(IE StringCollection to 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 可视化工具:
我想对 ICollection(或 IList)、IDictionary 等使用类似的东西。
请注意,在数组中,可视化器显示每个嵌套的对象。 这实际上是我想要实现的:
.
尝试可视化一个List,你会看到有一个私有值_items,所以你可以看到它的项目。我想在集合和字典中实现类似的东西。