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