下面的函数接受一个对象,该对象有时可以是给定类型的数组。在这种情况下,我想这个类型可以用obj [0] .GetType()来确定,假设数组至少有一个成员。我想将这样的数组转换为适当类型的通用列表<T>,但下面的代码只能成功转换为列表<对象>。如何才能做到这一点?将任意类型的数组转换为列表<T>(C#)
public object GetDeserializedObject(object obj, Type targetType) { if (obj is Array) { List<object> obj2 = new List<object>(); for (int i = 0; i < ((Array)obj).Length; i++) { obj2.Add(((object[])obj)[i]); } obj = obj2; } return obj; }
注意GetSerializedObject()实现了属于IDataContractSurrogate接口的功能,所以我不认为我可以改变它的签名,如图所示。
什么属于“...”的地方? – 2009-12-16 21:19:53
@nw:您放置Jon定义的ConvertArray方法的类。也就是说,如果将'ConvertArray'方法放入名为'ArrayConverter'的类中,则将'...'替换为'ArrayConverter'。 – jason 2009-12-16 21:41:42
@Jon:'TargetType'应该是'Type'。 – jason 2009-12-16 21:45:58