代码之家  ›  专栏  ›  技术社区  ›  Chucky

我应该如何构建一个视图的多个实例,所有的视图模型都非常相似,使用prism和unity

  •  0
  • Chucky  · 技术社区  · 6 年前

    我使用xamarinforms和prism作为mvvm,unity作为ioc容器。

    我正在重构前一位员工处理过的大量重复视图和视图模型代码。他们所做的基本上是剪切和粘贴一个非常复杂的视图和视图模型。我需要改变其中的一些东西,因为这个意大利面代码,我不得不做了5次。基本上就是这样的:

    enter image description here

    这些卡片视图的5个实例及其不同的视图模型有一个主标题、3个标签和3个与标签一起的值。使用各种restful调用检索值(所有这些调用都使用各种参数来检索它们并处理调用的结果)。

    我的问题是,我应该使用什么模式来简化这5个视图和视图模型,最好是将它们简化为只需要更改的1个文件?粗略地说,我认为我应该有一个viewmodel,它提供获取远程数据所需的所有文本、值和函数。但我对它似乎对我可用的所有不同方法(viewmodel接口、依赖注入、用同一viewmodel的不同实例注册模板视图的方法等)感到困惑。

    使我的问题特别复杂的是,这5个不同的视图被分为棱镜模块(即.net项目)。我理解这些功能的必要性,但它们似乎只是增加了重复代码的问题,而重复代码在很大程度上起着同样的作用。也许这些应该包含restful调用和处理的逻辑?但是,从上面看,这与我的viewmodel/view关联问题有什么关系呢?

    我会继续研究最好的方法来做到这一点,但我只想知道是否有人可以引导我走向最佳实践的方向?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Haukinger    6 年前

    如果有五个视图看起来相同,而有五个视图模型做(几乎)相同的事情,请分别删除四个视图。要解释视图模型执行的差异,请创建服务。

    这个 BookService 可能实现 GetTitles DvdService 查询另一个rest服务以获取dvd标题。他们两个都执行 ITitleService . 然后 UnifiedViewModel 专为书籍而设 图书服务 (最好通过构造器注入),因此它完全按照 BookViewModel 以前做过。刚才您有一个视图模型和五个服务,而之前您有五个视图模型。