ReactiveUI, View / ViewModel инъекция и DI в целом
В последнее время я пытаюсь погрузиться в новый век разработки пользовательского интерфейса и обнаружил ReactiveUI. Я люблю его декларативный характер.
Я хотел сделать полное переключение, поэтому я попытался понять, как дела в этом новом мире ReactiveUI. Я выбрал ReactiveUI, потому что видел, что его поддерживает очень умный парень (Пол С. Беттс).
Я очень новичок в этом, и я, вероятно, буду наводнять StackOverflow вопросами об этом, потому что у меня огромная сила, и я думаю, что это заслуживает изученияи освоил.
Давайте углубимся в детали:
Я всегда использовал View-First. Я опытный пользователь Cinch Framework (http://cinch.codeplex.com/)
Он использует MEF для внедрения ViewModels в каждое представление. Вам просто нужно украсить вашу ViewModel с помощью [ViewModel ("SampleView")] и добавить присоединенное свойство к вашему представлению (ViewModelLocator.ViewModel = "SampleView"), и всякий раз, когда представление загружается, соответствующий ViewModel создается и внедряется как его DataContext с выбранным вами жизненным циклом.
Этот механизм, хотя он и действует, имеет некоторые неудобства. Худший из них: он использует локатор.
Как предполагает Марк Симанн в своей книге, ServiceLocator - это анти-паттерн, которого следует избегать.
Итак, мой первый вопрос: построен ли ReactiveUI поверх инфраструктуры на основе локатора?View-First или ViewModel-First? Что может быть лучше с точки зрения хороших практик, развязки, SOLID и тому подобного, которые вызывают озабоченность у такого безумного любителя чистого кода от Microsoft, как я? Что заставит меня спать лучше и обеспечит мое приложение всеми этими качествами?