override List<baseClass> with List<derivedClass>

base-class, c#, derived-class

Solution

You can use generics

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

public class Scene : BaseScene<SceneModel>
{
}

public class WorldScene : BaseScene<WorldModel>
{    
}

Each type of scene will be parametrized by corresponding model type. Thus you will have strongly typed list of models for each scene.

Problem

I have base classes like this: ``` public class Scene { public IList<SceneModel> Models {get; set;} } public class SceneModel { } ``` and derived classes like this: ``` public class WorldScene : Scene { public override IList<WorldModel> Models {get; set;} } public class WorldModel : SceneModel { } ``` So my question is, how do I manage this. As it stands the compiler isn't happy with this (and to be honest it looks a bit weird to me anyway). So is what I'm trying to do impossible? And if so, why? Or is it possible and I'm just going about it the wrong way?

Original source