我将 MVVM 与 Prism 和 Silverlight 一起使用。我对一个模型有多种不同的看法。当我写更多视图时,他们的 ViewModel 似乎重复了很多与处理这个模型相关的通用代码。与其在所有虚拟机中重复相同的通用代码,我更倾向于将其推回模型中(这可能会过多地混淆关注点)。或者可能是一些常见的 ViewModel 基类?或者我的虚拟机可能需要它们和模型之间的第二级“共享虚拟机”?这个单一的共享实例,二级虚拟机将整合多个常规虚拟机共享的行为和状态。
对这些问题和可能的方法有何评论?
感谢您的评论。我可能应该告诉你更多关于有问题的特定“共享”VM 代码的信息。
我可以看到将一些未来代码放入 VM 基类中,但我正在查看的特定“共享”代码似乎属于模型本身实现的 INotifyPropertyChanged。这部分基于另一个线程。
我不认为这违反了 SoC,因为该模型本质上是动态的。它的某些属性仅在特定时间有效。模型的动态特性不仅对 UI 很重要,适当的单元测试也会关心它。因此这个模型似乎需要一个 INotifyPropertyChanged。
对此有何评论?