LList in IList<> umwandeln = Fehler

Razorhawk

Webdesigner und MSP
Hallo,

ich versuche folgende Liste zu konvertieren:

Code:
return (IList<ArtBioSiegel>)base.GetAll(typeof(ArtBioSiegel));

was aber wohl folgenden Fehler auslöst:

Code:
 System.InvalidCastException: Das Objekt des Typs System.Collections.ArrayList kann nicht in Typ System.Collections.Generic.IList`1[de.ET.ProdukteVerwaltung.pojo.ArtBioSiegel] umgewandelt werden.

wie soll ich die Liste sonst konvertieren?

Danke ür die hilfe!
 
Du musst aufpassen. Die ArrayList ist keine generische Klasse. Diese implementiert

System.Collections.IList

und nicht

System.Collections.Generic.IList<T>
 
Danke!

ich habe versucht eine Funktion zu schreiben, welche das konvertiert.

Zur Erklärung noch:
Die Klasse in der ich den oben definierten Code ausführe erbt von einer abstrakten Klasse.
Sprich es gibt mehrere Klassen die von einer abstrakten erbt und jede dieser Klassen besitzt eine andere Klasse für die von mir benötigte generische Liste.

Nun habe ich folgende Funktion geschrieben:

Code:
private IList<type> ConvertToGeneric(IList result,System.Type type){
        	IList<type> retList = new List<type>();
        	foreach( type obj in result )
            	retList.Add( obj );
        	return produktList;
        }

Ich möchte diese gerne in die abstrakte Klasse einfügen, statt diese in jeder einzelnen Klasse, welche die abstrakte erbt extra definieren zu müssen.
Dazu wollte ich die benötigte Klasse für die generische List mit angeben (auch deren Rückgabewert). So funktioniert sie oben natürlich nicht.
Gibt es denn eine Möglichkeit, dass auf diese oder in ähnlicher Weise zu lösen?

Danke

Razorhawk
 
Blöde Frage, aber warum gibt return (IList<ArtBioSiegel>)base.GetAll(typeof(ArtBioSiegel)); überhaupt eine ArrayList zurück? Stattdessen kannst du ja gleich eine List<T> zurückliefern.
 
Mhh weil ich Hibernate für C# verwende und Hibernate gibt mir schon eine nicht generische Liste von Objekten zurück.
 

Neue Beiträge

Zurück