gpt4 book ai didi

c# - MVVM和从模型到 View 模型的隐式转换

转载 作者:行者123 更新时间:2023-12-03 10:51:07 24 4
gpt4 key购买 nike

在维持模型与 View 模型之间的关系一段时间后(例如,为模型的每个实例创建vm实例),我有一些想法可能会引起争议,但是我对观点很好奇。

如果创建VM类以维护模型实例的静态容器列表,该怎么办。
这些可能(或什至应该)是弱引用,因此,只要模型类实例超出范围,其 View 模型就会自动处理。另一种选择是重用vm实例。

可能与第一个很好配合的另一个想法可能是创建一个从模型到 View 模型类的隐式强制转换运算符。每当从模型实例进行转换时,我总是会得到相同的vm实例。

你怎么看待这件事 ?这是对规则和MVVM模式的严格违反吗?

//编辑
我可能还应该提供其背后的动机:在我的应用程序中,我有多个地方使用我的模型类之一,并且需要相应的vm引用。在每个这样的地方,我都需要观察一个集合并对变化使用react-创建或删除vm实例。这基本上是在许多地方重复使用的相同代码=>我想只创建一个地方来执行此操作(隐式转换只是一个糖果,不需要它来解决实际问题)。还是我应该创建一个管理器来处理所有类的 View 模型实例,而不是静态列表?

最佳答案

首先,我不确定您的想法是否违反MVVM模式。我认为在每种情况下完全填充模式并不是那么重要。我眼中的一种模式暗示了解决问题的策略。在大多数情况下,绝对不值得遵循100%的模式。如果有实用的解决方案,您应该使用此解决方案。当然,这应该是可以引导您实现目标的解决方案,例如可单元测试,UI与应用逻辑分离等。

无论如何,当我第一次阅读您的文章时,我认为实现强制转换运算符是一个好主意。但是,如果我没看错,则需要在模型中引用 View 模型。我总是尽量避免这种情况,以最大程度地提高重用机会。但是我认为拥有这样的引用并不违反这种模式。也许其他人可以提供更多信息。

对我来说,您经理的想法是最好的方法。我使用类似的方法来创建 View 模型。这取决于您需要创建多少个 View 模型,但是您宁可创建新的 View 模型,也不愿重用现有的 View 模型。在我读过的某个地方, View 模型应该是 View 的某种状态机。按照这个想法,您永远都不知道重新使用 View 模型时处于什么状态。因此,首选方法是创建一个新的 View 模型。

只是一些想法!也许还有其他想法...

关于c# - MVVM和从模型到 View 模型的隐式转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3115123/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com