sha*_*ake 8 c# arrays reflection
我有一个对象数组,我想将其转换为特定的类型数组.我有将其转换为运行时的类型.但我在实际转换时遇到问题.
如果我使用Convert.ChangeType,我得到Object必须实现IConvertible的错误
Array.ConvertAll是基于模板的,要求我将目标类型作为模板传递,我只在运行时知道.我甚至尝试使用反射来调用此方法,但我不能将lambda表达式作为参数传递给MethodInfo.Invoke方法.
有任何想法吗?
对,我有以下不起作用:
Type convertTo = GetFinalType();
Object[] objArr = GetObjectArray();
var arr = Array.ConvertAll(objArr,elem=> Convert.ChangeType(elem,convertTo));
Run Code Online (Sandbox Code Playgroud)
Dou*_*oug 17
你试过这个吗?
var finalType = GetFinalType();
var objArr = GetObjectArray();
var arr = Array.CreateInstance(finalType, objArr.Length);
Array.Copy(objArr, arr, objArr.Length);
Run Code Online (Sandbox Code Playgroud)
这是未经测试的,但应该有效.它更紧凑,并且(真的)不使用反射.