最近我一直在尝试进入新的UI开发时代,并发现了ReactiveUI。我喜欢它的声明性特质。
我想完全切换,所以我试图了解在这个ReactiveUI的新世界中如何制作东西。我选择ReactiveUI是因为我看到它由一个非常聪明的人(Paul C. Betts)维护。
我很新手,可能会在StackOverflow上提出关于它的问题,因为它有很大的能量,我认为它值得学习和掌握。
让我们深入细节:
我一直使用视图优先。我是Cinch Framework(http://cinch.codeplex.com/)的老用户
它使用MEF将ViewModel注入到每个View中。您只需用[ViewModel("SampleView")]装饰您的ViewModel,并为您的View添加一个附加属性(ViewModelLocator.ViewModel =“SampleView”),每当View加载时,对应的ViewModel将根据您选择的生命周期进行实例化并注入为其DataContext。
虽然该机制有效,但它也存在一些不便之处,其中最糟糕的是:它使用了定位器。
正如Mark Seemann在他的书中建议的那样,ServiceLocator是一个应该避免使用的反模式。
- 所以我的第一个问题是:ReactiveUI是建立在基于定位器的基础设施之上吗?
- 视图优先还是ViewModel优先? 对于像我这样疯狂地喜欢微软Clean Code的人来说,哪个更好,涉及解耦、SOLID等这些问题?哪一个会让我睡得更好,并为我的应用程序提供所有这些*ibility的好处?