2011-05-19 66 views
0

我創建了一個class student,並在該類中創建了對象(聚合)contact。我正在檢索「對象」數組中的所有存儲對象。在C#中動態類型轉換對象.net

如果我想訪問student屬性我必須鍵入與student投它,如果我想訪問contact屬性要麼我給完整路徑(student_object.contact_object.attribute_name),或簡單地用contact強制類型轉換,並獲得屬性值。

我都徘徊在兩個地方:

  1. 如果我接受來自用戶類別名稱 然後要訪問 值。我怎樣才能做到這一點?如何 類型轉換與文本框變量。
  2. 如果字段名稱我在文本框中接受用戶 。我如何 使用文本框 變量訪問值?

Jon, 其實我已經在C#.NET中創建了一個面向對象的數據庫。那裏有上課。我正在檢索Object數組中的所有對象。班級學生有字段名稱和年齡,聯繫人有mobileID。現在我正在通過文本框創建一個查詢。如果用戶想要查看所有對象的名稱,那麼他推薦的var2名稱。但我無法獲得此消息 messageBox.show(o0 as Student).var2); 相同,如果不是學生,如果我給var1 messageBox.show(o0 as var1).var2); 我可以這樣做嗎? 謝謝/ Bharti

回答

1

鑄造是重要的編譯時間信息。這排除了用戶在執行時間提供的任何內容。

這聽起來像你真正需要的只是反射:

PropertyInfo property = value.GetType().GetProperty(propertyName); 
// Insert validation here... 
object propertyValue = property.GetValue(value, null); 

你需要更聰明,如果你希望用戶能夠評估諸如Address.ZipCode性質的路徑但應給你一個出發點。

+0

你可以詳細說明我沒有得到它。 – 2011-05-19 12:11:28

+0

@Bharti:我給你一些示例代碼...你試過了嗎?查看「Type.GetProperty」的文檔獲取更多信息。 – 2011-05-19 12:12:48

+0

我會寫我的代碼。 – 2011-05-19 12:15:00