【发布时间】:2011-09-23 19:27:54
【问题描述】:
抱歉,问题的标题令人困惑。我不确定应该如何实现从基类派生的 ViewModel 和模型。
我的 ViewModel 类基于 ViewModelBase,ViewModelBase 包含一个 ModelBase,它用作所有其他模型的基类。
每个 ViewModel 都拥有一个“Model”属性,但是,因为 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 的答案只有在您不想为您的对象使用任何类型的基本集合时才有效。如果您想使用集合,您的原始代码似乎是最合适的答案。
标签: c# .net wpf mvvm viewmodel