gpt4 book ai didi

c# - 使用反射将对象数组转换为另一种类型的数组

转载 作者:太空狗 更新时间:2023-10-29 19:57:39 25 4
gpt4 key购买 nike

我有一个对象数组,我想将它转换为特定类型的数组。我有将它转换成我在运行时得到的类型。但是我在进行实际转换时遇到了问题。

如果我使用 Convert.ChangeType,我会收到对象必须实现 IConvertible 的错误

Array.ConvertAll 是基于模板的,要求我将目标类型作为模板传递,我只在运行时知道它。我什至尝试使用反射来调用此方法,但我无法将 lambda 表达式作为参数传递给 MethodInfo.Invoke 方法。

有什么想法吗?

对,我有以下不起作用:

Type convertTo = GetFinalType();
Object[] objArr = GetObjectArray();
var arr = Array.ConvertAll(objArr,elem=> Convert.ChangeType(elem,convertTo));

最佳答案

你试过吗?

var finalType = GetFinalType();
var objArr = GetObjectArray();
var arr = Array.CreateInstance(finalType, objArr.Length);
Array.Copy(objArr, arr, objArr.Length);

那是未经测试的,但它应该可以工作。它更紧凑并且不(真的)使用反射。

关于c# - 使用反射将对象数组转换为另一种类型的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4340475/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com