C#中的动态类型

时间:2009-08-04 16:10:41

标签: c# typeof

我在编写typeof语句时遇到问题,该语句将使用配置文件中的变量,代码就像这样

Type t = new typeof ("My.other.class" + configValue[0]);

configValue是我从app.config文件获得的动态值。

我得到的错误是“预期的类型”如果我直接输入类,这样就可以了,所以我假设我的格式不正确。该怎么写?

3 个答案:

答案 0 :(得分:18)

typeof关键字用于编译时使用。请改用Type.GetType(string) API。

答案 1 :(得分:4)

这是你要找的吗?

Type t = Type.GetType("spork");
object myspork = Activator.CreateInstance(t);

答案 2 :(得分:2)

要仅使用命名空间和类名称(如问题中所示),您还需要知道哪个程序集包含该类。

如果当前运行的程序集(或mscorlib)包含Type,则可以使用Type.GetType(string)来获取Type。

如果Type包含在不同的程序集中(例如:库),那么您需要使用Assembly.GetType代替。这需要一个Assembly实例,但可以通过Assembly.Load或在程序集中使用其他类型来检索。