我正在尝试编写此转换器以适用于所有类型。所以我正在使用泛型。但是收到以下编译时错误。
无法将数组转换为列表
[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 :(得分:1)
JsonData中的对象不属于您传入的类型T.
答案 1 :(得分:1)
我不确定你为什么要施展到object
然后施放到T
。如果dataArray [i]可以转换为T
,那么您不需要通过object
来实现目标。话虽如此,我也会使用as
代替直接演员。这是因为您似乎并不总是知道dataArray[i]
可以投放到T
。
var item = dataArray[i] as T;
if (item != null)
{
dataList.Add(item);
}