如何使用字符串變量來獲取與給定類關聯的屬性?如果我使用的類名稱,如以下情況: -使用字符串名稱訪問類屬性
PropertyInfo[] propertyInfo = typeof(Treblet).GetProperties();
其中Treblet
是類的名字,那麼我可以得到的類屬性的數量。但是,我怎樣才能用一個字符串變量替換類的名字?感謝所有幫助。
如何使用字符串變量來獲取與給定類關聯的屬性?如果我使用的類名稱,如以下情況: -使用字符串名稱訪問類屬性
PropertyInfo[] propertyInfo = typeof(Treblet).GetProperties();
其中Treblet
是類的名字,那麼我可以得到的類屬性的數量。但是,我怎樣才能用一個字符串變量替換類的名字?感謝所有幫助。
string typeToSearchFor = "Treblet";
PropertyInfo[] propertyInfo =
Assembly.GetExecutingAssembly().GetTypes().Where(
t => t.Name == typeToSearchFor).FirstOrDefault().GetProperties();
這應該是訣竅。您將需要搜索該類型被定義的程序集。爲了簡單起見,我剛剛搜索了正在執行的程序集。
注意名稱只是類型的名稱,FullName是完全命名空間類型的名稱。
您需要退後一步 - 問題不在於獲取屬性,而是獲取Type
值,您可以在其中調用GetProperties
。爲此,您需要Assembly.GetType(string)
或Type.GetType(string)
。在這兩種情況下,您都需要命名空間限定的名稱,例如System.Guid
而不僅僅是Guid
。
如果使用Type.GetType(string)
與只是命名空間限定的名稱,它只會檢查mscorlib程序,並調用組件 - 你需要一個集限定名找到在不同的組件類型。
這是一段可愛的代碼,實際上它只是我嘗試創建自己但不能的代碼行;非常感謝。 – user995689