MVVM 上的视图模型设计中的继承

本文关键字:继承 模型 视图 MVVM | 更新日期: 2023-09-27 18:36:07

我对ViewModel设计与继承有点混淆。

塞纳罗:

我有一个数据模型和多个用户模型。我正在使用 ADO.Net 从数据库绑定到数据模型获取。并且数据模型可以传递给不同的 ViewModel.It 似乎可以使用一两个视图。但是当我的视图数量增加时,我需要不同的视图模型。我还想避免在我的视图模型中出现冗余字段。我创建了一个UserBaseModel。所以所有视图模型都继承自它

问题:

我有用户设置视图和用户注册视图

的密码和确认密码字段,我创建了用户设置视图模型和用户注册视图模型。而且我不认为其他视图模型不需要此字段。我不想在UserBaseModel中定义字段,也不想在两个ViewModel中为相同的字段定义多次。

还有其他选择吗?欢迎提出建议和建议

MVVM 上的视图模型设计中的继承

由于 C# 不支持多重继承,因此无法从第二个基本模型派生模型。您基本上最终会创建另一个基础视图模型,该模型派生自UserBaseModel并包含密码属性:

public UserBaseModelWithPassword : UserBaseModel
{
    public string Password { get; set; }
    public string PasswordConfirm { get; set; }
}

然后,您可以从中导出UserSettingViewModelUserRegistrationViewModel

更多的想法给了我另一个解决方案。

  public PasswordModel
{
    public string Password { get; set; }
    public string PasswordConfirm { get; set; }
}
public UserSettingViewModel
{
    public PasswordModel Password { get; set; }
}