我想要一个将字符串映射到不同类型的通用列表的Dictionary.即以下列形式:
Key Value string List<T> string List<U> string List<V> string List<U> ...
目前我正在使用a Dictionary<string, IList>
然后从每个字典KeyValuePair<string, IList> pair
条目中提取强类型列表,如下所示:
Type layerType = pair.Value.GetType().GetGenericArguments()[0];
List<layerType> objectsClicked = pair.Value as List<layerType>;
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来做到这一点?
[编辑]正如已经注意到的,上面的内容没有编译,道歉 - 这就是当你在做某些事情的时候提出问题时所得到的.更多解释.我正在制作一个基本的空间数据查看器.最终视图由一组Layer<T>
s组成.每个图层都提供一个委托来呈现其类型(给定偏移量和比例)以及检查其对象在当前窗口中的方式.对于命中测试,我希望每个图层的列表都被击中了对象.这份名单将是List<Point>
一个Point
层,等等......从所有命中的分组Layer<T>
s就那么是强类型列表的集合.
Ada*_*kis 43
Dictionary<string, dynamic>
假设你在C#4上怎么样?
Dictionary<string, dynamic> Dict = new Dictionary<string, dynamic>();
Dict.Add("int", new List<int>());
Dict.Add("string", new List<string>());
Dict["int"].Add(12);
Dict["string"].Add("str");
foreach (KeyValuePair<string, dynamic> pair in Dict) {
Type T = pair.Value.GetType();
Console.WriteLine(T.GetGenericArguments()[0].ToString());
}
Run Code Online (Sandbox Code Playgroud)
打印出来
System.Int32
System.String
这就是你要找的东西吗?