我在编写typeof语句时遇到问题,该语句将使用配置文件中的变量,代码就像这样
Type t = new typeof ("My.other.class" + configValue[0]);
configValue是我从app.config文件获得的动态值。
我得到的错误是“预期的类型”如果我直接输入类,这样就可以了,所以我假设我的格式不正确。该怎么写?
答案 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或在程序集中使用其他类型来检索。