2009-04-28 131 views

回答

14

我假設您在運行時擁有該屬性的名稱;不同時編碼...

讓我們假設你的類被稱爲theClass描述,它有一個叫利人屬性:

object GetThePropertyValue(object instance) 
{ 
    Type type = instance.GetType(); 
    PropertyInfo propertyInfo = type.GetProperty("TheProperty"); 
    return propertyInfo.GetValue(instance, null); 
} 
+3

你打敗了我。請注意,該功能不需要具有特定類型的參數。我相信`對象實例`可以做得很好。 – Noldorin 2009-04-28 15:42:54

0

只需使用該屬性的名稱。如果它是一個可爲空的屬性(例如int?屬性),請使用property.Value。

+0

反對票不公平,因爲問題不夠明確。 – fbinder 2009-04-28 16:42:36

0

在運行時,你可以使用反射來獲得屬性的值。

兩個注意事項:

  • 迷惑:一個模糊處理可能會改變 的屬性,它 將打破該功能的名稱。

  • 重構:以這種 方式使用反射會使代碼更難以重構 。如果您更改財產的名稱 ,則可能需要 搜索使用 反射的實例,以根據名稱獲取屬性值 。

2

我假設你的意思是你的財產的名稱是一個字符串。在這種情況下,您需要使用一點反射來獲取屬性值。在下面的示例中,包含該屬性的對象稱爲obj

var prop = obj.GetType().GetProperty("PropertyName"); 
var propValue = prop.GetValue(obj, null); 

希望有幫助。