簡體   English   中英

如何在抽象類中聲明任何類型的數組(從給定類型派生)?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM