小编kay*_*man的帖子

使用List <derivedClass>覆盖List <baseClass>

我有这样的基类:

public class Scene
{
    public IList<SceneModel> Models {get; set;}
}

public class SceneModel { }
Run Code Online (Sandbox Code Playgroud)

和派生类如下:

public class WorldScene : Scene
{
    public override IList<WorldModel> Models {get; set;}
}

public class WorldModel : SceneModel { }
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,我该如何管理呢.目前编译器对此并不满意(说实话,无论如何它看起来有点奇怪).那么我正在努力做什么不可能?如果是这样,为什么?或者是否有可能,我只是以错误的方式去做?

c# base-class derived-class

5
推荐指数
1
解决办法
1312
查看次数

从各种List <derivedClass <T >>创建List <genericBaseClass <T >>

对于某些上下文 - 这是早期问题的扩展.

使用List <derivedClass>覆盖List <baseClass>

无论如何,

我有一个通用的基类"场景"

public class Scene<T> where T: SceneModel { }
Run Code Online (Sandbox Code Playgroud)

我还有两个继承自这个的类:

public class WorldScene : Scene<WorldModel> { }
public class BattleScene : Scene<BattleModel> { }
Run Code Online (Sandbox Code Playgroud)

现在我需要做的是List<Scene<SceneModel>>包含WorldScene和BattleScene的混合物.在我需要列表的地方,我显然只需要使用WorldScene和BattleScene常用的属性/方法.

我知道它们是两个截然不同的对象 - 但是考虑到它们继承了同样的东西 - 我希望有一种聪明的方法可以用这种方式对它们进行分组,而无需手动将它们转换为第三种类型.

c# generics inheritance list

2
推荐指数
1
解决办法
83
查看次数

标签 统计

c# ×2

base-class ×1

derived-class ×1

generics ×1

inheritance ×1

list ×1