2012-07-05 99 views
0

如何引用Employee類型的對象的屬性,例如動態地引用?我喜歡employee."hasBeenPaid"之後?它是否涉及反思?如何使用字符串來定位對象的屬性?

class Employee 
{ 
    String name; 
    Bool hasBeenPaid; 
} 
+0

什麼是你要完成的更廣泛的目標? – reuben 2012-07-05 10:18:33

+1

@CodeCaster這是一個重複,如果你認爲答案將反映,但還有其他方式來做到這一點,鏈接的答案不包括。 – 2012-07-05 10:40:59

回答

5

你可以嘗試:

Type type = your_class.GetType(); 
PropertyInfo propinfo = type.GetProperty("hasBeenPaid"); 

如果您需要的值

value = propinfo.GetValue(your_class, null); 
+2

然後propInfo.GetValue(your_object,null)。另外Type.GetProperty有幾個參數(至少是BindingFlags),它允許你獲取公有的或者不公開的屬性,靜態的或者非靜態的(實例)等。 – 2012-07-05 10:20:08

+0

謝謝@AlexeyF,你絕對正確! – Marco 2012-07-05 10:26:31

2

您可以使用dynamic C# feature;是的,它會在運行時使用反射來解析你的屬性。

+1

從技術上講,這不起作用,DLR將拋出一個有關屬性可訪問性的運行時錯誤(這是默認的私有屬性),並且不能以「字符串」的形式訪問它,而是以編碼的鴨型屬性名稱的形式訪問它。 – 2012-07-05 10:20:29

+0

@Adam:OP沒有指定她需要使用字符串檢索屬性,我認爲C#動態功能可以涵蓋她正在尋找的內容。 – 2012-07-05 10:33:44

+0

問題標題特別說「帶字符串」,示例用法顯示一個字符串。使用基本形式的'dynamic'不足以滿足這些要求,使用字符串也意味着提供一個變量而不是一個literla的能力。 '動態'沒有任何改變使用鴨子鍵入,如果你想使用字符串,你需要做這樣的事情:http://stackoverflow.com/questions/2783502/c-sharp-using-the-dynamic-keyword-to -access-properties-via-strings-without-refle它不適用於他提供的實體並假定公共成員訪問。 – 2012-07-05 10:36:01

相關問題