【发布时间】:2009-08-04 16:10:40
【问题描述】:
我在编写 typeof 语句时遇到问题,该语句将使用配置文件中的变量,代码如下所示
Type t = new typeof ("My.other.class" + configValue[0]);
configValue 是我从 app.config 文件中获得的动态值。
我得到的错误是“预期类型”,如果我直接输入类就可以了,所以我假设我的格式不正确。这个应该怎么写?
【问题讨论】:
我在编写 typeof 语句时遇到问题,该语句将使用配置文件中的变量,代码如下所示
Type t = new typeof ("My.other.class" + configValue[0]);
configValue 是我从 app.config 文件中获得的动态值。
我得到的错误是“预期类型”,如果我直接输入类就可以了,所以我假设我的格式不正确。这个应该怎么写?
【问题讨论】:
typeof 关键字用于编译时使用。请改用Type.GetType(string) API。
【讨论】:
这是你要找的吗?
Type t = Type.GetType("spork");
object myspork = Activator.CreateInstance(t);
【讨论】:
要仅使用命名空间和类名(如问题中所示)来执行此操作,您还需要知道哪个程序集包含该类。
如果当前运行的程序集(或 mscorlib)包含该类型,那么您可以使用Type.GetType(string) 来获取该类型。
如果类型包含在不同的程序集中(即:库),那么您将需要使用Assembly.GetType。但是,这需要有一个 Assembly 实例,该实例可以通过 Assembly.Load 或在程序集中使用其他类型来检索。
【讨论】: