![](/img/trans.png)
[英]How could I iterate through list of abstract type, containing non-abstract types derived from that abstract class?
[英]How do I declare an array of any type (derived from a given type) in an abstract class?
我不確定我的問題是什么正確的英語單詞,所以我認為最好在代碼中說明它。 我有一個基本的,抽象的Windows窗體類,我用它來創建許多用於類似目的的派生Windows窗體。 在抽象基類中,我們稱之為Alfred
,我有一個類型為Buddy
的數組。 有時候,當我想繼承Alfred
,我也希望用一些特定於新派生形式AlfredJunior
功能來覆蓋類Buddy
。
所以,在Alfred
類的定義中:
protected Array<Buddy> importantArray;
而我在AlfredJunior
想要的是:
private class BuddyJunior : Buddy
{
public int newField;
// Constructors omitted
}
protected Array<BuddyJunior> importantArray;
我希望Alfred
定義的方法能夠訪問和使用importantArray
的元素,就好像它們是Buddy
類型,而不是BuddyJunior
。 但我需要在BuddyJunior
中繼承一些額外的功能(一個額外的字段),繼承的形式是AlfredJunior
。 這是怎樣的正確方法?
這就是你需要的:
public abstract class Alfred<B> where B : Buddy
{
protected B[] importantArray;
}
public class Buddy { }
public class BuddyJunior : Buddy
{
public int newField;
}
public class Alfred : Alfred<Buddy> { }
public class AlfredJunior : Alfred<BuddyJunior> { }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.