Tengo una matriz de objetos y quiero convertirla en una matriz de tipos específicos. Tengo el tipo para convertirlo en el que obtengo en tiempo de ejecución. Pero estoy teniendo un problema al hacer la conversión real.Convertir matriz de objetos a otra matriz de tipo usando Reflection
Si utilizo el Convert.ChangeType, me sale el error que objeto debe implementar IConvertible
El Array.ConvertAll está basada en plantillas y requiere que me pase el tipo de destino como una plantilla que sólo sé en tiempo de ejecución . Incluso intenté usar el reflejo para llamar a este método, pero no puedo pasar la expresión lambda como argumento al método MethodInfo.Invoke.
¿Alguna idea?
correcto que tiene los siguientes elementos que no está funcionando:
Type convertTo = GetFinalType();
Object[] objArr = GetObjectArray();
var arr = Array.ConvertAll(objArr,elem=> Convert.ChangeType(elem,convertTo));
¿Cómo es esto ¿Se lanza una excepción? –
@Mark: * "Recibo el error de que Object debe implementar IConvertible" * – cdhowie
La línea var arr = Array.ConvertAll (objArr, elem => Convert.ChangeType (elem, convertTo)); no se compila porque necesita el tipo de destino como plantilla, por ejemplo, Array.ConvertAll (objArr, elem => Convert.ChangeType (elem, convertTo)); .. Solo tengo T2 en tiempo de ejecución –
shake