Hey ,
stehe vor folgendem Problem:
Ich habe eine Klasse, deren Konstruktor eine Liste mit beliebigen Objekten übergeben werden soll. Auch weitere Listen können enthalten sein. In der Klasse soll dann für jede Liste innerhalb der Liste eine neue Instanz der eigenen Klasse angelegt werden, und für Instanzen einer speziellen Klasse soll ein bestimmter Code ausgeführt werden. Jeder Listeneintrag, der nicht der speziellen Klasse zugehörig ist oder selbst eine Liste ist soll ignoriert werden. Sieht dann folgendermaßen aus:
Public ListControl(List<object> lst)
{
foreach (object obj in lst)
if (obj is List<object>)
elements.Children.Add(new ListControl((List<object>)obj));
else if (obj is ControlElement)
//Do stuff
}
die Abfrage "obj is ControlElement" funktioniert, und es wird das richtige ausgeführt. Allerdings gibt die obere Abfrage "obj is List<object>" nur true zurück, wenn die Liste als List<object> erstellt wurde, genauso kann der Konstruktor ebenfalls nur mit einer List<object> aufgerufen werden, obwohl geplant ist, dass dieser (und auch die If Abfrage) beliebige Listen akzeptiert. Also auch List<int> oder List<List<ControlElement>>.
Hier war eben die Idee Object zu nutzen, da ja letztendlich jede Instanz auch immer ein Object ist. Leider funktioniert es so aber nicht. Hat jemand eine Idee wie man es implementieren könnte, dass beliebige Listen akzeptiert werden?
mfg
El