2009-09-11 32 views

回答

6
Type.GetType("class1") 
+0

僅當class1位於全局命名空間中時纔有效。 – 2009-09-11 15:38:55

+0

@Peter,當然,但這只是問題所在。更重要的是,它只適用於在mscorlib中定義的類型或包含對Type.GetType的調用的程序集中。 – 2009-11-30 11:23:22

1

Type.GetType(...)和Assembly.GetType(...)都需要一個完全限定的類型名稱。因此,只有在沒有名稱空間的情況下傳入類名纔會產生Type。

如果你一定要包括這樣的命名空間:

Type.GetType("Fully.Qualified.Namespace.class1") 

將產生相同的結果的GetType(1類)。

更新:如果你不知道你的類的命名空間,你可以做一個搜索(使用LINQ提醒你)在當前裝配類型:

GetType().Assembly.GetTypes().First(type => type.Name == "AssemblyModuleTests") 

我認爲這是一個緩慢的操作因爲GetTypes()枚舉程序集中的所有類型,所以使用完全限定名稱查找類型。

+0

你可以將第二個查詢與AppDomain.CurrentDomain.GetAssemblies()結合起來,將範圍添加到搜索中... – 2009-09-11 15:49:09

+0

@Roger - 當然。它會增加更多的負擔,因爲你會在所有加載的程序集中加載所有可能的類型。所以不知道更多關於這個場景我不會推薦它...... – 2009-09-11 16:09:23

相關問題