Sorry for the confusing title of the question. I am uncertain about how should I implement ViewModels and Models which derive from a base class.
My ViewModel classes are based on a ViewModelBase, the ViewModelBase holds a ModelBase which serves as a base class for all other models.
Each ViewModel holds a “Model” Property, however, because a Model property was defined by the base ViewModel class as the ModelBase class, I always have to create another property which casts the Model – from ModelBase to the relevant Model class.
My question is – is there not a simpler solution? Is there a design pattern which is relevant for these issues?
Here’s a code sample:
public abstract class BasicViewModel : ViewModelBase
{
public BasicViewModel()
{
}
public ModelBase Model { get; set; }
}
public class ModelBase
{
}
public class ContainableViewModel : BasicViewModel
{
public ContainableViewModel(ContainableModel model)
{
this.Model = model;
}
public ContainableModel MyModel { get { return (ContainableModel)Model; } }
public int Children { get { return MyModel.Children; } set { MyModel.Children = value; } }
}
public class ContainableModel : ModelBase
{
public ContainableModel()
{
Children = 2;
}
public int Children { get; set; }
}
As you can see, the “MyModel” property is the one which bugs me.
Thank you very much for your help and time!
If each of your view model contains a Model property, you could use generics:
Your containable view model is now defined as follows: