当涉及到在后台工作的处理程序时,在处理程序实例上实现IEventAggregator是否合法,然后通知ViewModel进度?在我看来,处理程序根本不是模型。
例如,如果我们使用函数MyHandler
得到一个正在启动线程MyThread
的类MyFunction
,它会不断报告处理程序中发生的进度。
我研究了很多,如果这确实打破了MVVM但却一无所获。怎么考虑?
答案 0 :(得分:1)
在您的案例中可能要问的问题是:视图模型是否可以在NUnit或SpecFlow中独立提出,并且可以在良好的覆盖范围内进行测试。如果答案是'是',那么你可以安排一下这个模式的大目标。其次,您可以询问处理程序是否严格地是一个发布者,其行为不需要特别了解订阅者是谁。如果答案是'是',那是另一个有利的迹象。最后,尽管需要更新和设置一些绑定,视图模型是否可以与模拟处理程序交互?这将是另一个有利的迹象。
在您的情况下,某些开发人员可能会选择使用Reactive Extensions中的IObservable作为发布工具(我将自己视为该组),但在该级别上,它基本上是一个实现决策,而不一定是设计决策。
模块化,可测试性和透明性在制作像MVVM模式一样强大的应用程序方面起着重要作用。如果您正在实现这些目标,那么它是否符合某人的MVVM概念将完全基于您的沟通/说服技巧。