2011-10-20 148 views
1

如何使用字符串變量來獲取與給定類關聯的屬性?如果我使用的類名稱,如以下情況: -使用字符串名稱訪問類屬性

PropertyInfo[] propertyInfo = typeof(Treblet).GetProperties();  

其中Treblet是類的名字,那麼我可以得到的類屬性的數量。但是,我怎樣才能用一個字符串變量替換類的名字?感謝所有幫助。

回答

1
string typeToSearchFor = "Treblet"; 
PropertyInfo[] propertyInfo = 
    Assembly.GetExecutingAssembly().GetTypes().Where(
     t => t.Name == typeToSearchFor).FirstOrDefault().GetProperties(); 

這應該是訣竅。您將需要搜索該類型被定義的程序集。爲了簡單起見,我剛剛搜索了正在執行的程序集。

注意名稱只是類型的名稱,FullName是完全命名空間類型的名稱。

+0

這是一段可愛的代碼,實際上它只是我嘗試創建自己但不能的代碼行;非常感謝。 – user995689

1

您需要退後一步 - 問題不在於獲取屬性,而是獲取Type值,您可以在其中調用GetProperties。爲此,您需要Assembly.GetType(string)Type.GetType(string)。在這兩種情況下,您都需要命名空間限定的名稱,例如System.Guid而不僅僅是Guid

如果使用Type.GetType(string)只是命名空間限定的名稱,它只會檢查mscorlib程序,並調用組件 - 你需要一個集限定名找到在不同的組件類型。

相關問題