В MVVMcross V3 было введено несколько значительных изменений в отношении конструкции ViewModel, которая была направлена на улучшение тестируемости и юзабилити для разработчиков. Вот ключевые изменения:
1. Инъекция зависимости на основе конструктора: одним из основных изменений было введение инъекции зависимостей на основе конструкторов. Это позволило разработчикам вводить зависимости непосредственно в конструктор ViewModel, облегчая управление зависимостями и улучшение тестируемости. До этого зависимости часто управлялись другими средствами, которые могли быть менее простыми.
2. Навигация с использованием навигационных навигационных классов: MVVMcross v3 представила новую навигационную систему, которая использовала типичные навигационные классы. Это означало, что вместо того, чтобы перемещаться непосредственно к представлениям, разработчики могли перемещаться между ViewModels, используя классы с твердыми типами. Этот подход упростил кроссплатформенную навигацию, абстрагируя детали для конкретной платформы.
3. Сохранение и перезагрузку состояния ViewModel для надгробия: еще одна важная особенность, представленная в V3, была способность сохранять и перезагрузить состояние ViewModel. Это было особенно полезно для обработки сценариев «Tombstoning», когда приложение может быть прекращено операционной системой из -за ограничений памяти, а затем восстановлено, когда пользователь возвращается к нему. Сохранение состояния ViewModel, приложения могут сохранить свое текущее состояние даже после прекращения и перезапуска.
4. Параметры навигации, передаваемые `init ()` Метод: в более старых версиях MVVMcross параметры навигации были переданы непосредственно к конструктору ViewModel. Однако, начиная с V3, эти параметры вместо этого были переданы методу `init ()`. Это изменение позволило конструктору использовать исключительно для инъекции зависимостей, что делает код чище и более поддерживаемым. Метод `init ()` стал местом, где были обработаны параметры навигации, что позволило получить более гибкую логику инициализации.
В целом, эти изменения в MVVMcross V3 обеспечили более структурированный и поддерживаемый способ построения и управления ViewModels, улучшая общий опыт разработки для кроссплатформенных приложений.
Цитаты:[1] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[2] https://github.com/mvvmcross/mvvmcross/releases
[3] https://www.reddit.com/r/csharp/comments/12akrcw/mvvm_question_how_do_you_manage_the_interaction/
[4] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-and-setup
[5] https://www.mvvmcross.com/blog/
[6] https://softwareengineering.stackexchange.com/questions/389086/do-we-need-models-if-we-are-using-viewmodels
[7] https://stackoverflow.com/questions/16723078/mvvmcross-does-showviewmodel-always-construct-new-instances
[8] https://stackoverflow.com/questions/39587974/changes-in-mvvmcross-bindings
[9] https://www.mvvmcross.com/documentation/fundamentals/navigation
[10] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[11] https://github.com/mvvmcross/mvvmcross/blob/develop/changelog.md