2009-08-04 48 views
2

我無法寫這將是利用可變從一個配置文件一個的typeof語句的代碼是這樣的動態的typeof在C#

Type t = new typeof ("My.other.class" + configValue[0]); 

configValue是動態值我從app.config文件得到。

我得到的錯誤是「類型預期」,如果我直接輸入類,那就好了,所以我假設我的格式不正確。這應該怎麼寫?

回答

18

關鍵字typeof用於編譯時使用。改爲使用Type.GetType(string) API。

+8

這不起作用,除非類型在當前程序集或mscorlib中。否則,您需要提供完整的程序集限定名稱,而不僅僅是名稱空間+類型。 – 2009-08-04 16:16:23

2

要使用名稱空間和類名(如問題中所示)來完成此操作,您還需要知道哪個程序集包含該類。

如果當前運行的程序集(或mscorlib)包含類型,則可以使用Type.GetType(string)來獲取類型。

如果類型包含在不同的程序集(即:庫)中,則需要使用Assembly.GetType來代替。這需要有一個Assembly實例,然而,它可以通過Assembly.Load檢索,或者使用程序集內的其他類型。

+2

您仍然可以使用Type.GetType。您只需要組件限定的類型名稱。我鏈接的API文檔解釋了這一點。 – 2009-08-04 16:40:40

4

這是你在找什麼?

Type t = Type.GetType("spork"); 
object myspork = Activator.CreateInstance(t);