2014-02-19 43 views
0

我試圖編寫此轉換器以適用於所有類型。所以我使用泛型。但收到以下編譯時錯誤。將JSON數組轉換爲列表<T>錯誤

無法轉換陣列列出
[System.InvalidCastException:不能從源類型轉換爲目標類型。

我不知道爲什麼它說我將數組轉換爲列表,當它應該將一個元素添加到列表。或者我如何施展它。

public static List<T> ConvertToList<T> (JsonData dataArray) 
{ 
    List<T> dataList = new List<T>(); 

    if(dataArray.IsArray) 
    { 
     for(int i=0; i < dataArray.Count; i++) 
     { 
      dataList.Add ((T)(object)dataArray[i]); 
     } 
    } 

    return dataList; 
} 
+0

'dataArray [i]'是什麼類型? – zerkms

+2

很明顯。你在'dataArray [i]'中有什麼'T' –

回答

1

在JsonData的對象是不是無論你的類型的T是要傳遞的。

1

我不知道爲什麼你鑄造object,然後鑄造T。如果dataArray [i]可以投射到T那麼你不需要通過object去那裏。有了這個說法,我還會使用as而不是直接施放。這是因爲你不會總是知道dataArray[i]可以投射到T

var item = dataArray[i] as T; 
if (item != null) 
{ 
    dataList.Add(item); 
} 
+0

'類型'只適用於參考類型,我需要可能接受兩者。 JsonData對象不能直接轉換爲T. – user2994682