在MVVM设计模式中,模型是否应包含其他模型?

jam*_*mer 0 c# mvvm xamarin.forms

我不认为我已经看到过这样的例子,但我也没有读过任何明确表示不应该这样做的地方.例如,假设我有一些用户模型,通常的东西,如名字姓氏等:

public class UserModel
{
    private int userID;
    public int UserID
    {
        get { return userID; }
    }

    public string FirstName { get; set; }

    public string LastName { get; set; }

    public string MiddleInitial { get; set; }

    ...

}
Run Code Online (Sandbox Code Playgroud)

如果我严格遵循MVVM模式,那么它是否可以拥有一些其他模型的列表

public class UserModel
{
    ...
    public List<SomeOtherModel> SomeList { get; set; }

}
Run Code Online (Sandbox Code Playgroud)

或模型只有简单类型?

slu*_*ter 5

很简单,是的.

在做MVVM时,你需要稍微改变你的观点."模型"的定义与MVC不同,而是包含不是视图和视图模型的所有内容.这意味着'model'是一个数据实体(即POCO),它包括任何服务或控制器,它包括业务逻辑等:

模型

MVVM中的模型是应用程序域模型的实现,包括数据模型以及业务和验证逻辑.模型对象的示例包括存储库,业务对象,数据传输对象(DTO),普通旧CLR对象(PO​​CO)以及生成的实体和代理对象.

引用自MSDN文章MVVM模式

那么既然你已经改变了你的观点,如果你的问题变成了POCO(DTO)是否应该包含其他POCO?那么答案仍然是肯定的.