【发布时间】:2015-01-09 23:29:11
【问题描述】:
最近我试图让自己进入 UI 开发的新时代并发现了 ReactiveUI。我喜欢它的声明性。
我想做一个完整的切换,所以我试图了解在这个 ReactiveUI 的新世界中是如何制作的。我选择 ReactiveUI 是因为我看到它是由一个非常聪明的人(Paul C. Betts)维护的。
我对它很陌生,我很可能会向 StackOverflow 提出关于它的问题,因为我拥有巨大的力量,我认为它值得学习和掌握。
让我们进入细节:
我一直使用视图优先。我是 Cinch 框架的资深用户 (http://cinch.codeplex.com/)
它使用 MEF 将 ViewModel 注入每个 View。您只需用 [ViewModel("SampleView")] 装饰您的 ViewModel 并向您的视图添加一个附加属性 (ViewModelLocator.ViewModel="SampleView"),并且每当加载视图时,相应的 ViewModel 就会被实例化并作为其注入DataContext 与您选择的生命周期。
这种机制虽然有效,但也有一些不便之处。其中最糟糕的是:它使用定位器。
正如 Mark Seemann 在他的书中所说,ServiceLocator 是一种应该避免的反模式。
- 所以我的第一个问题是:ReactiveUI 是建立在 基于定位器的基础架构?
- 视图优先还是视图模型优先?对于像我这样的疯狂的、支持微软的清洁代码爱好者来说,在良好实践、解耦、SOLID 和类似的东西方面有什么更好的呢?哪个能让我睡得更好,并为我的应用程序提供所有这些*能力优点?
【问题讨论】:
标签: c# mvvm reactiveui