Main /

C Sharp Design Problem Mit Generics

C Sharp Design Problem Mit Generics

/ 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?

Frische Änderungen | Menü editieren
zuletzt geändert am 28.03.2007 15:29 Uhr von Elsni
Edit Page | Page History