2012-04-12 69 views
6

我使用Type.GetType()来创建实例。Type.GetType()动态字符串返回null

这工作:

var type = Type.GetType("Test.ClassServices.HowService, Test"); 

但是,这doesn't工作。它返回null

var name = "How"; 
var type = Type.GetType("Test.ClassServices."+name+"Service, Test"); 
+2

GetType不创建实例,它返回表示指定类型的Type对象。至于null,你确定程序集可以被找到并被加载,并且命名空间是正确的吗? – Lloyd 2012-04-12 15:32:37

+4

我在.NET 4中试过这个,并没有问题。所以仔细检查错误代码。 – Jetti 2012-04-12 15:36:58

+2

你确定你没有在第二种情况下的任何错字?我想,'name'变量的值是计算出来的,你确定这是正确完成的(顺便说一句,套管事项)? – 2012-04-12 15:37:40

回答

5

没有重现。 MSDN上

var hardCodedWorking = Type.GetType("System.String"); 

var stringName = "String"; 
var concatenatedWorking = Type.GetType("System." + stringName); 

var badStringName = "string"; 
var concatenatedNull = Type.GetType("System." + badStringName); 

Type.GetType():运行此示例

获取的类型与所指定的名称,执行区分大小写 搜索。

基于上面的例子和我的例子,我认为name的值很可能与该类的名称完全不匹配。

相关问题