MVVMCROSS understøtter platformspecifik kode gennem flere mekanismer, hvilket giver udviklere mulighed for at oprette cross-platform-applikationer, mens de stadig udnytter indfødte platformfunktioner. Her er en detaljeret oversigt over, hvordan MVVMCross letter platformspecifik kode:
1. adskillelse af bekymringer **
MVVMCROSS-applikationer er typisk struktureret i to hoveddele: et kerneprojekt og platformspecifikke UI-projekter. Kerneprojektet, der ofte implementeres som et bærbart klassebibliotek (PCL) eller .NET Standard Library, indeholder forretningslogik, modeller, visningsmodeller og grænseflader til platformspecifikke tjenester. Denne adskillelse giver mulighed for maksimal genbrug af kode på tværs af platforme, mens platformspecifik kode isoleret i UI-projekterne [2] [7].2. inversion af kontrol (IOC) og afhængighedsinjektion **
MVVMCROSS bruger en IOC -container til at håndtere afhængigheder. Dette giver udviklere mulighed for at registrere platformspecifikke tjenester i de platformspecifikke projekter og injicere dem i kerneprojektets synsmodeller. For eksempel, hvis en applikation har brug for at få adgang til kameraet, kan kerneprojektet definere en grænseflade til kameraadgang, og hvert platformspecifikt projekt kan give sin egen implementering af denne grænseflade. IOC-beholderen løser derefter disse afhængigheder ved kørsel, hvilket sikrer, at den korrekte platformspecifikke service bruges [2] [8] [11].3. platformspecifikke tjenester **
Platformspecifikke tjenester implementeres i de oprindelige UI-projekter. Disse tjenester er registreret i installationsklassen for hvert platformprojekt. Opsætningsklassen er ansvarlig for bootstrapping MVVMCROSS og registrering af platformspecifikke tjenester med IOC-containeren. Dette gør det muligt for visningsmodeller i kerneprojektet at bruge platformspecifik funktionalitet uden direkte at henvise til platformspecifikke API'er [2] [7].4. plugin Framework **
MVVMCROSS inkluderer en plugin-ramme, der giver udviklere mulighed for let at integrere platformspecifikke funktioner i deres applikationer. Plugins kan give funktionaliteter som GPS -placering, lokalisering, sensorer og mere. Disse plugins er registreret hos IOC-containeren, hvilket gør det muligt for visningsmodeller at få adgang til platformspecifikke funktioner gennem afhængighedsinjektion. Denne ramme understøtter også mock -implementeringer til testformål [4] [11].5. Tilpaselig bindingsmotor **
MVVMCROSS tilvejebringer en tilpasselig bindingsmotor, der giver udviklere mulighed for at oprette brugerdefinerede bindinger til platformspecifikke visninger. Denne funktion er især nyttig, når man arbejder med indfødte kontroller, der ikke understøtter standarddatabindingsmekanismer. Ved at definere brugerdefinerede bindinger kan udviklere sikre, at deres synsmodeller er korrekt forbundet til platformspecifikke synspunkter [4].6. Platformpræsentanter **
MVVMCROSS bruger platformspecifikke præsentanter (f.eks. `IMVXIOSViewPresenter`,` IMVXANDROIDViewPresenter`) til at styre, hvordan visninger vises på hver platform. Disse præsentanter giver mulighed for tilpasning af præsentationslogikken, hvilket gør det muligt for udviklere at tilpasse UI -opførsel til den specifikke platforms krav [3].I sammendraget understøtter MVVMCROSS platformspecifik kode ved at tilvejebringe en struktureret tilgang til at adskille forretningslogik fra platformspecifik implementering, udnytte IOC og afhængighedsinjektion til servicestyring og tilbyde tilpasselig bindings- og plugin-rammer til integration af native funktioner. Dette gør det muligt for udviklere at maksimere genbrug af kode, mens de stadig leverer platformspecifikke brugeroplevelser.
Citater:[1] https://www.suneco.nl/blogs/boost-your-xamarin-native-projects-with-mvvmcross/
[2] https://dev.to/christian1006/creating-cross-platform-xamarin-applications-using-the-mvvmcross-ramework-2920
[3] https://canbilgin.wordpress.com/tag/mvvmcross/
[4] https://github.com/mvvmcross/mvvmcross
[5] https://www.codeproject.com/articles/863695/introduktion-to-mvvmcross-platform
)
[7] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[8] https://stackoverflow.com/questions/14337063/platform-specifik-ioc-in-mvvmcross
[9] https://www.mvvmcross.com/documentation/getting-started/getting-started
)
[11] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-thone-build-mvvm-apps-with-xamarin-and-mvvmcross