Ich versuche, eine Factory-Methode zu schreiben, die eine abgeleitete Instanz einer abstrakten generischen Auflistungsklasse erstellen wird. Hier sind die Basisklassen ...
abstract class ItemBase { }
abstract class CollectionBase<T> : Collection<T> where T : ItemBase, new() { }
...und ihre abgeleiteten Klassen ...
class Item : ItemBase { }
class ItemCollection : CollectionBase<Item> {}
Nun möchte ich eine Factory-Methode, die eine ItemCollection erstellt. Beachten Sie jedoch, dass die abgeleiteten Klassen Item und ItemCollection der Klasse, die diese Fabrikmethode enthält, unbekannt sind. Ich stelle mir das folgendermaßen vor ...
static T CreateItemCollection<T>() where T : CollectionBase<ItemBase>, new()
{
return new T();
}
... und ich stelle mir vor, es so zu beschwören ...
var collection = CreateItemCollection<ItemCollection>();
Aber die Factory-Methode lässt sich nicht kompilieren, weil ItemBase einen parameterlosen Konstruktor haben muss. Und der Aufruf weigert sich zu glauben, dass ItemCollection
wird abgeleitet von CollectionBase<ItemBase>
.
Kann mir bitte jemand die richtige Richtung weisen? Danke!