对不起,问题的混淆标题。我不确定应该如何实现从基类派生的ViewModel和Model。模型和视图模型的关系和继承 - 应该如何实现?
我的ViewModel类基于ViewModelBase,ViewModelBase包含一个ModelBase,它作为所有其他模型的基类。但是,因为Model属性由基本ViewModel类定义为ModelBase类,所以我总是必须创建另一个属性,该属性将Model从ModelBase转换为相关的Model类。
我的问题是 - 有没有更简单的解决方案?是否有与这些问题相关的设计模式?
下面是一个代码示例:
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; }
}
正如你所看到的,“为MyModel”属性是一个哪些错误我。
非常感谢您的帮助和时间!
ColinE的答案只有在你不想为你的对象使用任何类型的基础集合时才有用。如果你想使用集合,你的原始代码似乎是最合适的答案。 –