2010-01-29 64 views
1

我試圖讓是通過反射.NET反思與數組

我想是這樣的一維數組的屬性值:(嘗試捕獲爲清楚起見移除)

string[] fieldOrder; 
PropertyInfo fieldOrderColumn; 

fieldOrderColumn = targetType.GetProperty("OrderArray"); 

if (fieldOrderColumn == null) 
    throw new Exception(targetType.Name + " the OrderArray is null "); 

fieldOrder = (string[])fieldOrderColumn.GetValue(targetType, null); //what should I use insted of this? 

顯然最後一行是錯誤的,並試圖獲得一個非數組對象,我假設一個 快速谷歌,我會在我的路上,但我無法找到它。我不知道運行時陣列的長度。

任何提示或鏈接或幫助將不勝感激。

回答

3

您需要將該類型的實例轉換爲GetValue。如果它是靜態屬性,則通過null。目前您正通過類型。我希望看到(大約):

Type targetType = obj.GetType(); 
...[snip] 
fieldOrder = (string[])fieldOrderColumn.GetValue(obj, null); 

注意,如果你不知道數組的類型,你可以使用(而不是string[]Array,或者單維數組IList可能有用(並將處理陣列,列表等):

IList list = (IList)fieldOrderColumn.GetValue(obj, null); 
+0

就是這樣,謝謝! 我崇拜你的大方向! – 2010-01-29 22:51:55