MVVMcross je zasnovan tako, da učinkovito ravna s kodo, specifično za platformo, tako da loči logiko aplikacije na dva glavna dela: osnovni projekt in projekt, specifičen za platformo. Osrednji projekt, ki je običajno standardna knjižnica .NET, vsebuje poslovno logiko, modele ogledov, modele in vmesnike za storitve, specifične za platformo. To omogoča največjo skupno rabo kode na različnih platformah, kot so Android, iOS in Windows.
Projekti, specifični za platformo
Vsak projekt, specifičen za platformo (npr. Xamarin.android, xamarin.ios), vsebuje uporabniški vmesnik in izvajanje storitev, specifičnih za platformo. Ti projekti so odgovorni za inicializacijo okvira MVVMcross in registracijo storitev, specifičnih za platformo, z uporabo nastavitvenega razreda. Razred nastavitve deluje kot zagon za MVVMcross, ki razvijalcem omogoča, da prilagodijo vedenje okvira za vsako platformo.
Inverzija nadzora (IOC) in vbrizgavanje odvisnosti
MVVMcross za upravljanje odvisnosti v aplikaciji uporablja inverzijo kontinuide (IOC). To omogoča registracijo in vbrizgavanje storitev, specifičnih za platformo, v logiko osnovnega projekta. Na primer, če mora aplikacija dostopati do lokacijskih storitev GPS, lahko storitev GPS registrirate v nastavitvenem razredu, specifičnem za platformo in nato vbrizgate v modele pogleda ali druge dele osnovnega projekta.
Prilagajanje vedenja platforme
Razvijalci lahko prilagajajo vedenje, specifično za platformo, tako da v razredu nastavitve prevladujejo. Na primer, na Androidu lahko v `mvxandroidsetup` preglasite metode, da registrirate storitve, specifične za Android ali se lotite dogodkov življenjskega cikla, specifičnih za Android. Podobno bi v iOS-u uporabili `mvxiossetup` za obdelavo inicializacije in registracije storitev, specifične za iOS.
View predstavitelji
MVVMcross ponuja tudi predstaviteljem pogleda, ki so odgovorni za odločanje, kako so pogledi predstavljeni na vsaki platformi. To omogoča prilagajanje logike predstavitve uporabniškega vmesnika, na primer prikazovanje pogledov modalno ali kot del navigacijskega sklada, odvisno od konvencij platforme.
Vtičniki in podaljški
MVVMcross ponuja okvir vtičnikov, ki razvijalcem omogoča enostavno integracijo vtičnikov tretjih oseb za skupne funkcionalnosti, kot so lokalizacija, senzorji in drugo. Te vtičnike se lahko uporabljajo na več platformah, kar še dodatno zmanjša potrebo po kodi, specifični za platformo.
Če povzamemo, MVVMcross obravnava kodo, specifično za platformo, tako da zagotavlja strukturiran pristop k ločevanju skupne logike od izvedbe, specifičnih za platformo. Uporablja IOC in vbrizgavanje odvisnosti za upravljanje storitev platforme, omogoča prilagajanje prek nastavitvenega razreda in podpira vtičnike za razširitev funkcionalnosti na platformah.
Navedbe:[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-pecific-ioc-in-mvvmcross
[6] https://stackoverflow.com/questions/61641185/platform-specific-service-causes-an-exception-mvmcross-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-start
[11] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-and-setup