MVVM C#问题

MVVM C#问题,第1张

概述我目前正在学习MVVM和我一直使用的教程,只使用一个View Model和一个Model.视图模型注入了Model接口,如下所示: public ViewModel(IQuoteSource quoteSource){} 这是通过DI使用Unity处理的.我的问题是如果VM依赖于多个模型,比如任意6或7?我们只是将它们中的每一个注入ctor中,还是应该有单独的VM? 或者每个模型是否应该尝试 我目前正在学习MVVM和我一直使用的教程,只使用一个VIEw Model和一个Model.视图模型注入了Model接口,如下所示:

public viewmodel(IQuoteSource quoteSource){}

这是通过DI使用Unity处理的.我的问题是如果VM依赖于多个模型,比如任意6或7?我们只是将它们中的每一个注入ctor中,还是应该有单独的VM?

或者每个模型是否应该尝试实现一个特定的接口,该接口会暴露一些方法/事件,例如注册挂钩,然后在数据更新后发生事件?

谢谢.

解决方法 这是您的VM依赖的许多模型.您可以在构造函数上注入所有这些,这使依赖更加明确和可见.或者您可以让VM从Unity容器中解析各种模型:

public viewmodel(IUnityContainer container) {    IQuoteSource model1 = container.Resolve<IQuoteSource>();    ... etc ...}

当使用Unity解析具体实例并且您没有在Resolve()调用中指定任何构造函数参数时,Unity将检查从最复杂到最基本的构造函数,如果它找到一个接受Unity容器然后它将使用它(如果找到它们,它将首先使用其他人.)因此,如果您的VM在构造函数中使用Unity容器,则它可以使用该容器进一步解析它所需的任何内容.

有些人可能会争论哪种方法更合适 – 直接注入所有必需的依赖项,或只注入具有依赖项的容器. IMVHO对这两种方法都有积极的和消极的,使用哪种方式更适合你的风格.

您还可以考虑在某种程度上重构代码,也可以引入一个新模型,它是几个现有模型的外观.另一种可能性是你所谓的模型实际上可能更适合作为服务(这是一个告诉我的标志,如果模型在几个地方用来从特定来源获取数据,如果是这种情况那么你可以将该功能分离到Unity容器中的服务和购物车中,以便在必要时使用它.

1参考:Telling Unity Which Constructor to Use when Initializing a Class

总结

以上是内存溢出为你收集整理的MVVM C#问题全部内容,希望文章能够帮你解决MVVM C#问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1233689.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存