4
說我有幾個基類是泛型類的派生類。每個派生類都使用特定的類型覆蓋繼承基類(但所有類型也都是從單個基類型派生的)。具有泛型基類的派生類的集合
例如:
我有一個基行類
class RowBase
{
//some properties and abstract methods
}
我有個從行基類派生
class SpecificRow1 : RowBase
{
//some extra properties and overrides
}
class SpecificRow2 : RowBase
{
//some extra properties and overrides
}
然後兩個特定行類我有一個第二個基類,它是一個泛型類,它包含RowBase派生類的集合
class SomeBase<T> where T : RowBase
{
ICollection<T> Collection { get; set; }
//some other properties and abstract methods
}
然後,我有從SomeBase派生,但我主要還是更大範圍使用不同的特定行類
class SomeClass1 : SomeBase<SpecificRow1>
{
//some properties and overrides
}
class SomeClass2 : SomeBase<SpecificRow2>
{
//some properties and overrides
}
現在兩班,我想創建一個列表/集合,由兩個SomeClass1和SomeClass2對象。像
ICollection<???> CombinedCollection = new ...
CombinedCollection.Add(new SomeClass1())
CombinedCollection.Add(new SomeClass2())
.
.
.
//add more objects and do something about the collection
.
.
.
問題是:有可能有這樣的收藏?如果有可能,我該如何做到這一點?如果不是,可以採用哪種替代方法?
啊,接口!這就是我想念的。謝謝! – noddy
這可能已經超出我的問題,但如果我有方法具有泛型類型T的參數,我想在循環myList集合時調用它。在這種情況下,我不能聲明T型協變。那是否意味着我根本無法做到這一點? – noddy