如何在抽象类中声明任何类型的数组(派生自给定类型)
本文关键字:类型 派生 数组 抽象类 声明 任何 | 更新日期: 2023-09-27 18:34:40
我不确定我的问题的正确英语单词是什么,所以我认为最好用代码来说明它。我有一个基本的抽象 Windows 窗体类,用于创建许多用于类似用途的派生 Windows 窗体。在抽象基类(我们称之为Alfred
(中,我有一个类型为 Buddy
的数组。但有时,当我想继承Alfred
时,我还想使用特定于新派生形式的一些功能覆盖类Buddy
,AlfredJunior
.
因此,在类Alfred
的定义中:
protected Array<Buddy> importantArray;
我想要AlfredJunior
的是:
private class BuddyJunior : Buddy
{
public int newField;
// Constructors omitted
}
protected Array<BuddyJunior> importantArray;
我希望 Alfred
中定义的方法可以访问和使用 importantArray
的元素,就好像它们是 Buddy
类型一样,而不是 BuddyJunior
.但是我只需要在继承形式AlfredJunior
BuddyJunior
中增加一点额外的功能(一个额外的字段(。正确的方法是什么?
这是你需要的:
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> { }