/ HomePage / Computer / Programmierung / Beispiele & Snippets? / C Sharp? / C Sharp Design Problem Mit Generics
Ein C# Design Problem mit generischen Listen und bisher keine Lösung
Gegeben sei eine Klasse BusinessObject von der die Klassen Customer und Project abgeleitet sind.
Weiterhin existiert eine Klasse
public class BusinessObjectList<T> : System.ComponentModel.BindingList<T> where T : BusinessObject
{
...
}
Man kann also z.b. je eine Liste für Customer und Project-Objekte anlegen:
private BusinessObjectList<Customer> customerlist;
private BusinessObjectList<Project> projectlist;
Ziel ist es nun, eine generische Liste listcontainer zu erzeugen, in der obige beiden Listen als Elemente hinein können.
Das Problem ist dass BusinessObjectList<Customer> ein anderer Typ ist als BusinessObjectList<Project> und auch als BusinessObjectList<BusinessObject>
Zwar ist es möglich eine Liste wie folgt zu definieren:
private List<BusinessObjectList<BusinessObject>> listcontainer;
Da aber die Ausprägungen einer generischen liste andere Objekte sind, schlägt die Zuweisung fehl:
listcontainer.Add(customerlist); // Compiler wirft Fehlermeldung
Man könnte vorher die Listen in den Typ BusinessObjectList<BusinessObject> umwandeln, das ist aber weder Ressourcenschonend noch praktikabel, denn damit geht die Information verloren um welche Art Liste es sich eigentlich gehandelt hat.
Wie kann man das Problem lösen?