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

kay*_*man 5 c# base-class derived-class

我有这样的基类:

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)

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

Ser*_*kiy 8

你可以使用泛型

public class BaseScene<T>
    where T : SceneModel
{
    public IList<T> Models {get; set;}
}

public class Scene : BaseScene<SceneModel>
{
}

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

每种类型的场景将通过相应的模型类型进行参数化.因此,您将为每个场景提供强类型的模型列表.