Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Как Mvvmcross обрабатывает код, специфичный для платформы


Как Mvvmcross обрабатывает код, специфичный для платформы


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