如何以更通用的方式将原始列表转换为另一个列表。目标类型仅在运行时已知。
我尝试了以下方法,但得到了一个 List<object>
填充了 DestinationType 类型的元素。
public static object ToList(List<object> original,Type destinationType)
{
return
original
.Select(v => Convert.ChangeType(v, destinationType, CultureInfo.InvariantCulture))
.ToList();//List<object> is returned, I want a List<destinationType>
}
最佳答案
试试这个:
var list = (IList)Activator.CreateInstance(typeof(List<>).MakeGenericType(destinationType));
foreach (var element in original)
{
var converted = Convert.ChangeType(element, destinationType, CultureInfo.InvariantCulture);
list.Add(converted);
}
return list;
代码创建 List<destinationType>
的实例然后在运行时将所有转换后的元素添加到它并返回它。
关于c# - 对象列表到预定类型列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19220914/