【发布时间】:2016-08-01 13:34:51
【问题描述】:
我正在尝试实现以下目标,但我不确定它是否可能。
我有以下“基础”实体
public abstract class BaseObject {}
public abstract class BaseCollection <T> : ObservableCollection<T> where T : BaseObject {}
我也有
public class Obj_1: BaseObject {}
public class Obj_1_collection : BaseCollection <Obj_1>
{
public Obj_1_Method_1 () {}
}
和
public class Obj_2: Obj_1 {}
按照与Obj_1 相同的逻辑,我想要一个Obj_2_collection。我希望这个集合继承自 Obj_1_collection 以便访问它的方法,例如Obj_2_collection.Obj_1_Method_1()。正如我的想法一样,我正在尝试执行以下操作(在伪代码中):
public class Obj_2_collection : Obj_1_collection<Obj_2 extends Obj_1>
表示Obj_2_collection 可以访问Obj_1_collection,但是集合对象的类型为Obj_2
【问题讨论】:
-
您是否尝试将您的
Obj_1_collection定义为public class Obj_1_collection<T> : BaseCollection <T> where T : Obj_1 {} -
Obj_1 和 Obj_2 需要继承同一个基类 BaseObject。在您的代码中,您有 Obj_2 继承 Obj_1。
-
@jdweng 这意味着
Obj_2也继承自BaseObject -
@jdweng 这是因为我需要 Obj_2 继承 Obj_1,这是我的逻辑的一部分。例如 base = 车辆,Obj_1 = 汽车,Obj_2 = 豪华车
标签: c# inheritance collections