MVVMCRoss è progettato per gestire in modo efficiente il codice specifico della piattaforma separando la logica dell'applicazione in due parti principali: un progetto principale e progetti specifici della piattaforma. Il progetto principale, in genere una libreria standard .NET, contiene la logica aziendale, i modelli di visualizzazione, i modelli e le interfacce per i servizi specifici della piattaforma. Ciò consente la massima condivisione del codice su piattaforme diverse come Android, iOS e Windows.
Progetti specifici per la piattaforma ###
Ogni progetto specifico della piattaforma (ad es. Xamarin.android, xamarin.ios) contiene l'interfaccia utente e l'implementazione di servizi specifici della piattaforma. Questi progetti sono responsabili dell'inizializzazione del framework MVVMCRoss e della registrazione dei servizi specifici della piattaforma utilizzando la classe di configurazione. La classe di configurazione funge da bootstrapper per MVVMCRoss, consentendo agli sviluppatori di personalizzare il comportamento del framework per ciascuna piattaforma.
Inversione del controllo (IOC) e iniezione di dipendenza
MVVMCROSS utilizza un contenitore di inversione del controllo (IOC) per gestire le dipendenze attraverso l'applicazione. Ciò consente ai servizi specifici della piattaforma di essere registrati e iniettati nella logica del progetto principale. Ad esempio, se un'applicazione deve accedere ai servizi di posizione GPS, il servizio GPS può essere registrato nella classe di configurazione specifica della piattaforma e quindi iniettato nei modelli di visualizzazione o in altre parti del progetto principale.
personalizzare il comportamento della piattaforma
Gli sviluppatori possono personalizzare il comportamento specifico della piattaforma prevalendo sui metodi nella classe di configurazione. Ad esempio, su Android, è possibile sostituire i metodi in `mvxandroidSetUp` per registrare servizi specifici per Android o gestire eventi di vita specifici per Android. Allo stesso modo, su iOS, useresti `mvxiossetup` per gestire l'inizializzazione e la registrazione del servizio specifiche per iOS.
Visualizza presentatori
MVVMCROSS fornisce anche presentatori di visualizzazioni, che sono responsabili di decidere come vengono presentate le viste su ciascuna piattaforma. Ciò consente la personalizzazione della logica di presentazione dell'interfaccia utente, come mostrare le viste modalmente o come parte di uno stack di navigazione, a seconda delle convenzioni della piattaforma.
Plugin ed estensioni ###
MVVMCROSS offre un framework di plug-in che consente agli sviluppatori di integrare facilmente plug-in di terze parti per funzionalità comuni come localizzazione, sensori e altro ancora. Questi plugin possono essere utilizzati su più piattaforme, riducendo ulteriormente la necessità di codice specifico della piattaforma.
In sintesi, MVVMCRoss gestisce il codice specifico della piattaforma fornendo un approccio strutturato per separare la logica condivisa dalle implementazioni specifiche della piattaforma. Utilizza l'iniezione di CIO e dipendenza per gestire i servizi della piattaforma, consente la personalizzazione tramite la classe di configurazione e supporta i plugin per l'estensione delle funzionalità attraverso le piattaforme.
Citazioni:[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-specific-ioc-in-mvvmcross
[6] https://stackoverflow.com/questions/61641185/platform-specific-service-causs-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-mvvvmcross-platform
[10] https://www.mvvmcross.com/documentation/getting-started/getting-started
[11] https://www.mvvmcross.com/documentation/advanced/customizing-using-using-app-and-setup