【发布时间】:2011-02-18 05:37:07
【问题描述】:
我想要一个将字符串映射到不同类型的通用列表的字典。即采用以下形式:
键值 字符串列表目前我正在使用Dictionary<string, IList>,然后从每个字典KeyValuePair<string, IList> pair 条目中提取强类型列表,如下所示:
Type layerType = pair.Value.GetType().GetGenericArguments()[0];
List<layerType> objectsClicked = pair.Value as List<layerType>;
有更好的方法吗?
[编辑]
正如已经指出的那样,上面没有编译,道歉 - 这就是你在做某事时提出问题时得到的结果。
更多的解释。我正在制作一个基本的空间数据查看器。最终视图由一组Layer<T>s 组成。每个层都提供了一个委托来渲染其类型(给定偏移量和比例)以及一种检查其哪些对象在当前窗口中的方法。对于命中测试,我想要每个被命中对象的图层的列表。该列表将是 List<Point> 用于 Point 层等...然后将来自所有 Layer<T>s 的命中分组为强类型列表的集合。
【问题讨论】:
-
提供的代码示例无法编译。无论如何,如果您能告诉我们 a) 列出清单后您将如何处理 b) 您要解决的更大问题是什么,那将非常有帮助。
-
你所拥有的不会编译。您不能将类型对象作为泛型类型参数传递。如果您不以强类型方式访问列表,为什么还需要泛型?
-
既然你把这些列表放在同一个字典里,它们之间肯定有一些共同点(例如它们有相同的基类/接口什么的)。您应该提供更多信息。
标签: c#