在IList <t> </t>中使用Type.GetType(string)

时间:2010-06-25 14:58:19

标签: c# ilist gettype

由于我无法对此post发表任何评论(仅发布回答),我会发布一个新问题。
我按照上述帖子的说明进行操作,但代码产生错误 代码:

Type t = Type.GetType(className);
Type listType = typeof(List<>).MakeGenericType(t);
IList list = (IList)Activator.CreateInstance(listType);

错误:

  

使用泛型类型'System.Collections.Generic.IList'需要'1'类型参数

显然,我不能只说明IList没有任何类型,所以我想知道所提到的帖子的答案到底是怎么回事。

提前致谢。

3 个答案:

答案 0 :(得分:9)

您可以,您只需要一个不同的使用指令:

using System.Collections;

这样您就可以使用非通用IList代替通用IList<T>

我相信这是所引用答案的精神。

答案 1 :(得分:1)

Type t = Type.GetType(className);
Type listType = typeof(List<>).MakeGenericType(t);
IList list = (IList)Activator.CreateInstance(listType);

应该做的伎俩。

在使用IList接口检索对象时,您必须强制转换对象,但基础List将强制只将类型为T的对象添加到集合中。

答案 2 :(得分:0)