首页新闻找找看学习计划

通过字符串实例化一个类(List<CLASSNAME>)

0
悬赏园豆:10 [已关闭问题] 解决于 2013-10-30 11:02

public class staff

{

  ..........;

}

private void Run()

{

  List<staff> staffs = new List<staff>();

}

如果我仅仅有一个字符串值为staff类的类名,且我不知道staff类的类名,该如何实现上面的操作?

即如何根据字符串(类名)实现下面的操作:

List<staff> staffs = new List<staff>();

先谢了!

Xuen的主页 Xuen | 初学一级 | 园豆:159
提问于:2013-10-28 12:42
< >
分享
其他回答(3)
0

关键字:反射。

幻天芒 | 园豆:36544 (高人七级) | 2013-10-28 12:47

我知道怎么用反射实例化一个类 但是不清楚如何实例化List<> 可以详细解释一下吗  谢谢!

支持(0) 反对(0) Xuen | 园豆:159 (初学一级) | 2013-10-28 12:49

@Xuen:参考下:

//反射创建泛型集合
            Type lt = typeof(List<>);
            var t=Type.GetType("表达式解析器.TTT");//命名空间不能省
            Type[] typeArgs = {t };
            var m=Activator.CreateInstance(t);
            lt=lt.MakeGenericType(typeArgs);
            var list=Activator.CreateInstance (lt) as IList;
            list.Add(m);

 

支持(1) 反对(0) 幻天芒 | 园豆:36544 (高人七级) | 2013-10-28 13:18
0

你只知道一个类的名字?然后你要创建这个类的集合?

这个应该是可以用反射去实现的,LZ可以参考我的文章 关于 反射的: 反射 你怎么看 ?

Zery | 园豆:6069 (大侠五级) | 2013-10-28 12:49
0

在MSDN上查询反射相关内容,会对你有帮助。

朝曦 | 园豆:1073 (小虾三级) | 2013-10-28 12:50
0

楼主可能误入歧途了。

1、你不知道类

2、你知道LIST

其实你完全可以类似这样解决的。

dim a as new List(of object)

 

...

利用反射获取 classname的实例b

...

 

a.add(b)

这时候a就是你需要的List(Classname)

大部份情况下,你不需要连List也使用反射来构造啊。你只需要使用反射得到ClassName的实例,再

将这个实例加入List就行了。

爱编程的大叔 | 园豆:30089 (高人七级) | 2013-10-28 15:01
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册