我有这样的基类:
public class Scene
{
public IList<SceneModel> Models {get; set;}
}
public class SceneModel { }
和这样的派生类:
public class WorldScene : Scene
{
public override IList<WorldModel> Models {get; set;}
}
public class WorldModel : SceneModel { }
所以我的问题是,我该如何管理呢。目前编译器对此并不满意(说实话,无论如何它看起来有点奇怪)。那么我正在努力做什么不可能?如果是这样,为什么?或者它是否可能,我只是以错误的方式去做?
答案 0 :(得分:7)
您可以使用泛型
public class BaseScene<T>
where T : SceneModel
{
public IList<T> Models {get; set;}
}
public class Scene : BaseScene<SceneModel>
{
}
public class WorldScene : BaseScene<WorldModel>
{
}
每种类型的场景都将通过相应的模型类型进行参数化。因此,您将为每个场景提供强类型的模型列表。
答案 1 :(得分:2)
这根本不可能。
如果你写
会发生什么Scene x = new WorldScene();
x.Models.Add(new OtherModel());
您刚刚向OtherModel
添加了List<WorldModel>
。
相反,您应该使基类通用。