MVVMcross предназначен для эффективной обработки кода, специфичного для платформы путем разделения логики приложения на две основные части: основной проект и проекты, специфичные для платформы. Основной проект, обычно стандартная библиотека .NET, содержит бизнес-логику, просмотр моделей, модели и интерфейсы для сервисов для специфичных для платформы. Это позволяет максимально обмен кодом на разных платформах, таких как Android, iOS и Windows.
Платформа. Проекты
Каждый проект, специфичный для платформы (например, xamarin.android, xamarin.ios) содержит пользовательский интерфейс и реализацию сервисов для специфичных для платформы. Эти проекты отвечают за инициализацию фреймворка MVVMcross и регистрации сервисов для специфичных для платформы с использованием класса настройки. Класс настройки выступает в качестве начальной загрузки для MVVMcross, что позволяет разработчикам настраивать поведение фреймворка для каждой платформы.
Инверсия контроля (МОК) и инъекции зависимости
MVVMcross использует инверсию контейнера управления (IOC) для управления зависимостями по всему приложению. Это позволяет зарегистрировать и вводить сервисы, специфичные для платформы, в логику основного проекта. Например, если приложению необходимо получить доступ к службам местоположения GPS, сервис GPS может быть зарегистрирована в классе настроек для конкретной платформы, а затем введена в модели View или другие части основного проекта.
Настройка поведения платформы
Разработчики могут настраивать поведение, специфичное для платформы, переоценивая методы в классе настройки. Например, на Android вы можете переопределить методы в `mvxandroidsetup` для регистрации сервисов, специфичных для Android, или обработки Android-специфических событий жизненного цикла. Точно так же на iOS вы бы использовали `mvxiossetup` для обработки специфической для iOS инициализации и регистрации услуг.
Просмотреть докладчики
MVVMcross также предоставляет докладчиков View, которые отвечают за решение о том, как представления представлены на каждой платформе. Это позволяет настраивать логику презентации пользовательского интерфейса, такую как показ видов модально или как часть навигационного стека, в зависимости от соглашений платформы.
плагины и расширения
MVVMcross предлагает плагинную структуру, которая позволяет разработчикам легко интегрировать сторонние плагины для общих функций, таких как локализация, датчики и многое другое. Эти плагины можно использовать на нескольких платформах, что еще больше сокращает потребность в коде, специфичной для платформы.
Таким образом, MVVMcross обрабатывает код, специфичный для платформы, предоставляя структурированный подход к отделению общей логики от реализаций, специфичной для платформы. Он использует IOC и инъекцию зависимостей для управления службами платформы, позволяет настраивать класс настройки и поддерживает плагины для расширения функциональности между платформами.
Цитаты:[1] https://github.com/mvvmcross/mvvmcross
[2] https://dev.to/christian1006/creating-cross-platform-xamarin-applications-using-the-mvvmcross-framework-2920
[3] https://canbilgin.wordpress.com/tag/mvvmcross/
[4] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[5] https://stackoverflow.com/questions/14337063/platform-price-ioc-in-mvvmcross
[6] https://stackoverflow.com/questions/61641185/platformpecifice-service-causes-an-exception-mvvmcross-xamarin-ios
[7] https://leaware.com/creating-cross-platform-xamarin-applications-using-the-mvvmcross-framework/
[8] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-packages
[9] https://www.codeproject.com/articles/863695/introduction-to-mvvmcross-platform
[10] https://www.mvvmcross.com/documentation/getting-started/getting-started
[11] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-and-setup