Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Hoe gaat MVVMCross om met platformspecifieke code


Hoe gaat MVVMCross om met platformspecifieke code


MVVMCross is ontworpen om platformspecifieke code efficiënt af te handelen door de applicatielogica te scheiden in twee hoofdonderdelen: een kernproject en platformspecifieke projecten. Het kernproject, meestal A .NET Standard Library, bevat de bedrijfslogica, bekijk modellen, modellen en interfaces voor platformspecifieke services. Dit zorgt voor maximale code -delen op verschillende platforms zoals Android, iOS en Windows.

platformspecifieke projecten

Elk platformspecifiek project (bijv. Xamarin.android, xamarin.ios) bevat de gebruikersinterface en implementatie van platformspecifieke services. Deze projecten zijn verantwoordelijk voor het initialiseren van het MVVMCross-framework en het registreren van platformspecifieke services met behulp van de Setup-klasse. De setup -klasse fungeert als een bootstrapper voor MVVMCross, waardoor ontwikkelaars het gedrag van het framework voor elk platform kunnen aanpassen.

inversie van controle (IOC) en afhankelijkheidsinjectie

MVVMCross gebruikt een inversie van controle (IOC) container om afhankelijkheden in de toepassing te beheren. Hierdoor kunnen platformspecifieke services worden geregistreerd en geïnjecteerd in de logica van het kernproject. Als een applicatie bijvoorbeeld toegang moet hebben tot GPS-locatiediensten, kan de GPS-service worden geregistreerd in de platformspecifieke setup-klasse en vervolgens worden geïnjecteerd in de weergavemodellen of andere delen van het kernproject.

PLATFORM Gedrag aanpassen

Ontwikkelaars kunnen platformspecifiek gedrag aanpassen door methoden in de setup-klasse te overschrijven. Op Android kunt u bijvoorbeeld methoden in `mvxandroidsetup` overschrijven om Android-specifieke services te registreren of Android-specifieke levenscyclusevenementen te verwerken. Evenzo zou u op iOS `mvxiossetup` gebruiken om iOS-specifieke initialisatie en serviceregistratie aan te kunnen.

Bekijk presentatoren

MVVMCROSS biedt ook weergavespresentatoren, die verantwoordelijk zijn voor de beslissing hoe weergaven op elk platform worden gepresenteerd. Dit zorgt voor aanpassing van de UI -presentatielogica, zoals het weergeven van weergaven modaal of als onderdeel van een navigatiestapel, afhankelijk van de conventies van het platform.

plug -ins en extensies

MVVMCross biedt een plug-in framework waarmee ontwikkelaars gemakkelijk plug-ins van derden kunnen integreren voor gemeenschappelijke functionaliteiten zoals lokalisatie, sensoren en meer. Deze plug-ins kunnen op meerdere platforms worden gebruikt, waardoor de behoefte aan platformspecifieke code verder wordt verminderd.

Samenvattend verwerkt MVVMCross platformspecifieke code door een gestructureerde aanpak te bieden om gedeelde logica te scheiden van platformspecifieke implementaties. Het maakt gebruik van IOC- en afhankelijkheidsinjectie om platformservices te beheren, maakt het mogelijk om de setup -klasse aan te passen en ondersteunt plug -ins voor het uitbreiden van functionaliteit tussen platforms.

Citaten:
[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-specifiek-ioc-in-mvvmcross
[6] https://stackoverflow.com/questions/61641185/platform-specifieke-service-causes-an-exception-mvvmcross-xamarin-ios
[7] https://lealware.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