ich habe hier ein Problem, an dem ich nun schon ein Weilchen herum doctore.
Und zwar habe ich eine Komponente, die über eine Property "Items" eine IList<object> übergeben bekommen soll.
Soweit, so gut. Dumm nur, dass es in .NET 3.5 noch keine kovarianten Generika gibt, so dass folgender Aufruf zu einem Fehler führt:
Code: Alles auswählen
IList<TestClass> dataList = new List<TestClass>();
Items = dataList;
Allerdings möchte ich das vermeiden, da ich schon ganz gerne wüsste, was sich so in der Liste befindet.
Die nächste Möglichkeit wäre es die Property mit Typ object zu deklarieren, so dass sich schließlich alles mögliche zuweisen lässt.
Dann bin ich aber in der Not innerhalb des zugehörigen Getters 1. zu prüfen, ob die übergebene Instanz die IList-Schnittstelle implementiert und 2. jene Instanz in eine solche IList zurück zu casten.
Die eigentliche Frage ist also wie ich ein "object" in eine "IList<T>" caste, wobei der generische Typ "T" (in diesem Fall ja "TestClass") noch zu bestimmen ist. Ich weiß, dass die Antwort Reflections lautet. Allerdings habe ich leider keine Ahnung wie sich dies damit umsetzen lässt.
Hat zufällig jemand eine Idee oder vllt. noch einen besseren Vorschlag?
Vielen Dank und beste Grüße,
Marcell