我不确定什么是正确的英语单词,所以我认为最好在代码中加以说明。我有一个基本的抽象Windows Forms类,该类用于创建许多派生的Windows Forms,它们具有相似的用途。在我们称为抽象基类中,Alfred
我有一个type数组Buddy
。不过有时候,当我想继承时Alfred
,我也想Buddy
使用特定于新派生表单的某些功能覆盖类AlfredJunior
。
因此,在class的定义中Alfred
:
protected Array<Buddy> importantArray;
我想要的AlfredJunior
是:
private class BuddyJunior : Buddy
{
public int newField;
// Constructors omitted
}
protected Array<BuddyJunior> importantArray;
我想使用中定义的方法Alfred
来访问和使用元素,importantArray
就好像它们是typeBuddy
而不是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> { }
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句