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#问题所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)