Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Як Mvvmcross обробляє конкретний код платформи


Як Mvvmcross обробляє конкретний код платформи


MVVMCross призначений для ефективного обробки коду, що стосується платформи, розділяючи логіку програми на дві основні частини: основні проекти та проекти, що стосуються платформи. Основний проект, як правило, стандартна бібліотека .NET, містить бізнес-логіку, переглянути моделі, моделі та інтерфейси для специфічних для платформи послуг. Це дозволяє досягти максимального обміну кодом на різних платформах, таких як Android, iOS та Windows.

Платформа-проекти

Кожен проект, що стосується платформи (наприклад, Xamarin.android, Xamarin.IOS), містить інтерфейс користувача та реалізацію специфічних для платформи послуг. Ці проекти несуть відповідальність за ініціалізацію рамки MVVMCross та реєстрацію специфічних для платформи Сервісів за допомогою класу налаштування. Клас налаштування виступає як завантажувач для MVVMCross, що дозволяє розробникам налаштувати поведінку рамки для кожної платформи.

Інверсія контролю (МОК) та введення залежності

MVVMCross використовує інверсію контрольного (МОК) контейнера для управління залежністю у програмі. Це дозволяє реєструвати та вводити послуги, що стосуються платформи, в логіку основного проекту. Наприклад, якщо додаток потребує доступу до служб розташування GPS, послуга GPS може бути зареєстрована в класі налаштування, що стосується платформи, а потім вводити в моделі перегляду або інші частини основного проекту.

Налаштування поведінки платформи

Розробники можуть налаштувати поведінку, що стосується платформи, переосмислюючи методи в класі налаштування. Наприклад, на Android ви можете перекрити методи `mvxandroidsetup` для реєстрації специфічних для Android служб або обробки подій життєвого циклу, специфічних для Android. Аналогічно, на iOS ви використовували б `mvxiossetup` для обробки ініціалізації та реєстрації послуг.

Переглянути представників

MVVMCross також надає ведучих ведучих, які відповідають за вирішення того, як представлені погляди на кожній платформі. Це дозволяє налаштувати логіку презентації інтерфейсу, наприклад, показувати перегляди модально або як частину навігаційного стека, залежно від конвенцій платформи.

Плагіни та розширення

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-scific-ioc-in-mvvmcross
[6] https://stackoverflow.com/questions/61641185/platform-sicific-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