通过其他地方传入的类名实例该类的集合

Lucky_502 2015-09-16 07:54:23
从api获取到的类名,在程序里面动态实例化该类的集合该怎么弄呀?听说是用反射,但是我找了些资料,发现反射创建的是一个object类型的实体,不知道该怎么弄成对于的集合,下面是我写的代码:

string state = contextModel.Request["state"].GetString();//获取游戏参数
string model = ConfigurationManager.ConnectionStrings[state].ToString();//获取需要调用的实体类名称
Type tp = Type.GetType("SwimmingGame."+model); //需要带上命名空间
object o = Activator.CreateInstance(tp);
...全文
148 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
winnowc 2015-09-17
  • 打赏
  • 举报
回复
var list = (IList)Activator.CreateInstance(typeof(List<>).MakeGenericType(tp));
这样就是创建了一个那个类型的泛型 List,没办法直接用泛型的 IList<T> 接口,但可以通过 IList 接口使用这个集合。
Lucky_502 2015-09-17
  • 打赏
  • 举报
回复
引用 6 楼 shingoscar 的回复:
引用 4 楼 Lucky_502 的回复:
这样也不行的呀,
需要加using System.Collections;
引用 7 楼 github_22161131 的回复:
引用 4 楼 Lucky_502 的回复:
这样也不行的呀,
你没弄对命名空间,编译器把 IList 类型当作 IList<T>了,可以 using System.Collections
恩恩,加了可以了。这个var list 就可以像List一样直接用了是吗?
winnowc 2015-09-17
  • 打赏
  • 举报
回复
引用 4 楼 Lucky_502 的回复:
这样也不行的呀,
你没弄对命名空间,编译器把 IList 类型当作 IList<T>了,可以 using System.Collections
Poopaye 2015-09-17
  • 打赏
  • 举报
回复
引用 4 楼 Lucky_502 的回复:
这样也不行的呀,
需要加using System.Collections;
Poopaye 2015-09-17
  • 打赏
  • 举报
回复
创建数组用Array.CreateInstance(tp, 长度);
Lucky_502 2015-09-17
  • 打赏
  • 举报
回复
引用 2 楼 github_22161131 的回复:
var list = (IList)Activator.CreateInstance(typeof(List<>).MakeGenericType(tp));
这样就是创建了一个那个类型的泛型 List,没办法直接用泛型的 IList<T> 接口,但可以通过 IList 接口使用这个集合。

这样也不行的呀,
Lucky_502 2015-09-17
  • 打赏
  • 举报
回复
引用 1 楼 starfd 的回复:
没定义接口的话你就一路反射下去吧……
能不能请教下该怎么弄?
  • 打赏
  • 举报
回复
没定义接口的话你就一路反射下去吧……

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧