2012-04-12 78 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的值很可能與該類的名稱完全不匹配。

相關問題