Ich habe ein Objekt-Array und ich möchte es in ein Array des spezifischen Typs konvertieren. Ich habe den Typ in den ich es zur Laufzeit umwandeln kann. Aber ich habe ein Problem mit der tatsächlichen Konvertierung.Objekt Array in ein anderes Array mit Reflection konvertieren
Wenn ich die Convert.ChangeType verwenden, erhalte ich die Fehlermeldung, dass Object IConvertible implementieren muss
Die Array.ConvertAll ist Vorlage basiert und erfordert, dass ich den Zieltyp als Vorlage übergeben, die ich nur zur Laufzeit kennen . Ich habe sogar versucht, Reflektion zu verwenden, um diese Methode aufzurufen, aber ich kann den Lambda-Ausdruck nicht als Argument für die MethodInfo.Invoke-Methode übergeben.
Irgendwelche Ideen?
Recht habe ich die folgende, die nicht funktionieren:
Type convertTo = GetFinalType();
Object[] objArr = GetObjectArray();
var arr = Array.ConvertAll(objArr,elem=> Convert.ChangeType(elem,convertTo));
Wie ist das Wird eine Ausnahme ausgelöst? –
@Mark: * "Ich bekomme den Fehler, dass Objekt IConvertible implementieren muss" * – cdhowie
Die Zeile var arr = Array.ConvertAll (objArr, elem => Convert.ChangeType (elem, convertTo)); kompiliert nicht, da es den Zieltyp als Vorlage benötigt, z. B. Array.ConvertAll (objArr, elem => Convert.ChangeType (elem, convertTo)); .. Ich habe nur T2 zur Laufzeit –
shake