MVVM - 如何处理 ViewModel 中由模型组成的匿名类型

Posted

技术标签:

【中文标题】MVVM - 如何处理 ViewModel 中由模型组成的匿名类型【英文标题】:MVVM - How to handle anonymous types composed of models inside ViewModel 【发布时间】:2021-10-26 19:11:02 【问题描述】:

目前我的视图需要接收一个包含来自两个不同模型的信息的列表。

类似的东西

public class ViewModel

    [JsonProperty("")]
    public List<Unknown> viewModelList;

这个Unknown 类型将包含来自两个不同模型的信息,就像这样。

public class FirstModel

    int w;
    int x;


public class SecondModel

    int y;
    int z;


public class Unknown //Model or ViewModel?

    [JsonProperty("")]
    int w; //From FirstModel

    [JsonProperty("")]
    int x; //From SecondModel

我的问题是,这个Unknown 类型必须是模型吗?我对模型的想法是它们代表业务实体或数据库实体,而 ViewModel 是这些模型的抽象。在这种情况下,Unknown 什么都不是,而是FirstModelSecondModel 的抽象,所以我认为它更像是一个 ViewModel,而不是一个模型,但是如果我把它当作一个 ViewModel,我无法从中制作列表,否则我的代码将如下所示

public class ViewModel

    [JsonProperty("")]
    public List<UnknownViewModel> viewModelList;

这将是 ViewModel 中的 ViewModel,我不知道这是常见的做法还是好的做法。

【问题讨论】:

【参考方案1】:

你所说的绝对没有功能上的区别。重要的是你如何使用这些类型。

model 只是一个包含数据(或状态)的类型。 view-model,顾名思义,是用作视图(或表示)支持的模型。就是这样。

在这里,在您的示例中,您使用 Unknown 作为模型 - 一个被用作可能用作视图模型的类型的集合属性的元素类型。

【讨论】:

以上是关于MVVM - 如何处理 ViewModel 中由模型组成的匿名类型的主要内容,如果未能解决你的问题,请参考以下文章

避免在 React 中由对象字面量引起的重新渲染:如何处理对象中的变量?

如何处理 ViewModel 中的配置更改

在 MVVM + Coordinator 中,如何处理子视图?

第784期Vue.js 和 MVVM 小细节

使用MVVM框架时,如何处理在页面动态渲染完之后需要发生的事件呢?

当 ListView 有 ItemTemplate 时如何处理 ListViewItem 的右键单击?