Zbiór klas pochodnych, które mają ogólną klasę bazową
Powiedzmy, że mam kilka klas pochodnych, których klasa bazowa jest klasą ogólną. Każda klasa pochodna dziedziczy klasę podstawową z konkretnym nadpisaniem typu (ale wszystkie typy również pochodzą od jednego typu bazowego).
Na przykład:
Mam klasę wiersza podstawowego
class RowBase
{
//some properties and abstract methods
}
I mam dwie konkretne klasy wierszy, które pochodzą z klasy bazowej wiersza
class SpecificRow1 : RowBase
{
//some extra properties and overrides
}
class SpecificRow2 : RowBase
{
//some extra properties and overrides
}
Następnie mam drugą klasę bazową, która jest klasą ogólną, która zawiera kolekcję klas pochodnych z RowBase
class SomeBase<T> where T : RowBase
{
ICollection<T> Collection { get; set; }
//some other properties and abstract methods
}
Następnie mam dwie klasy pochodzące z SomeBase, ale używające innej określonej klasy wiersza
class SomeClass1 : SomeBase<SpecificRow1>
{
//some properties and overrides
}
class SomeClass2 : SomeBase<SpecificRow2>
{
//some properties and overrides
}
Teraz, gdy w moim głównym lub większym zakresie, chcę utworzyć listę / kolekcję, która zawiera zarówno obiekty SomeClass1, jak i SomeClass2. Lubić
ICollection<???> CombinedCollection = new ...
CombinedCollection.Add(new SomeClass1())
CombinedCollection.Add(new SomeClass2())
.
.
.
//add more objects and do something about the collection
.
.
.
Pytanie brzmi: czy możliwe jest posiadanie takiej kolekcji? Jeśli to możliwe, jak mogę to osiągnąć? Jeśli nie, co może być alternatywnym sposobem?