繁体   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