MVVMCross unterstützt plattformspezifischen Code über mehrere Mechanismen, sodass Entwickler plattformübergreifende Anwendungen erstellen können und gleichzeitig native Plattformfunktionen nutzen können. Hier finden Sie einen detaillierten Überblick darüber, wie mvvmcross den plattformspezifischen Code erleichtert:
1. Trennung von Bedenken **
MVVMCross-Anwendungen sind typischerweise in zwei Hauptteile aufgebaut: ein Kernprojekt und plattformspezifische UI-Projekte. Das Kernprojekt, das häufig als tragbare Klassenbibliothek (PCL) oder .NET-Standardbibliothek implementiert wird, enthält die Geschäftslogik, Modelle, Ansichtsmodelle und Schnittstellen für plattformspezifische Dienste. Diese Trennung ermöglicht eine maximale Wiederverwendung von Code über Plattformen hinweg, während der plattformspezifische Code in den UI-Projekten isoliert wird [2] [7].2. Inversion der Kontrolle (IOC) und Abhängigkeitsinjektion **
MVVMCross verwendet einen IOC -Container, um Abhängigkeiten zu verwalten. Auf diese Weise können Entwickler plattformspezifische Dienste in den plattformspezifischen Projekten registrieren und die Ansichtsmodelle des Kernprojekts injizieren. Wenn beispielsweise eine Anwendung auf die Kamera zugreifen muss, kann das Kernprojekt eine Schnittstelle für den Zugang zum Kamera definieren, und jedes plattformspezifische Projekt kann eine eigene Implementierung dieser Schnittstelle bereitstellen. Der IOC-Container löst dann diese Abhängigkeiten zur Laufzeit auf und stellt sicher, dass der korrekte plattformspezifische Dienst verwendet wird [2] [8] [11].3. plattformspezifische Dienste **
Plattformspezifische Dienste werden in den nativen UI-Projekten implementiert. Diese Dienste sind in der Setup -Klasse jedes Plattformprojekts registriert. Die Setup-Klasse ist verantwortlich für das Bootstrapping MVVMCross und die Registrierung plattformspezifischer Dienste im IOC-Container. Auf diese Weise können Ansichtsmodelle im Kernprojekt plattformspezifische Funktionen verwendet werden, ohne die plattformspezifische APIs direkt zu verweisen [2] [7].4. Plugin Framework **
MVVMCross enthält ein Plugin-Framework, mit dem Entwickler plattformspezifische Funktionen einfach in ihre Anwendungen integrieren können. Plugins können Funktionen wie GPS -Standort, Lokalisierung, Sensoren und mehr liefern. Diese Plugins sind im IOC-Container registriert, sodass Ansichtsmodelle durch Abhängigkeitsinjektion auf plattformspezifische Funktionen zugreifen können. Dieser Framework unterstützt auch Mock -Implementierungen für Testzwecke [4] [11].5. Anpassbare Bindungsmotor **
MVVMCross bietet eine anpassbare Bindungs-Engine, mit der Entwickler benutzerdefinierte Bindungen für plattformspezifische Ansichten erstellen können. Diese Funktion ist besonders nützlich, wenn sie mit nativen Kontrollen arbeiten, die keine Standarddatenbindungsmechanismen unterstützen. Durch die Definition von benutzerdefinierten Bindungen können Entwickler sicherstellen, dass ihre Ansichtsmodelle ordnungsgemäß mit plattformspezifischen Ansichten verbunden sind [4].6. Plattform -Moderatoren **
MVVMCross verwendet plattformspezifische Präsentatoren (z. B. `imvxiosViewPresenter`,` IMVXandroidViewPresenter`), um zu verwalten, wie Ansichten auf jeder Plattform angezeigt werden. Diese Moderatoren ermöglichen die Anpassung der Präsentationslogik, sodass Entwickler das UI -Verhalten an die Anforderungen der spezifischen Plattform anpassen können [3].Zusammenfassend unterstützt MVVMCROSS den plattformspezifischen Code, indem er einen strukturierten Ansatz zur Trennung von Geschäftslogik von plattformspezifischer Implementierung, Nutzung von IOC und Abhängigkeitsinjektion für das Servicemanagement sowie das Anbieten anpassbarer Bindungs- und Plugin-Frameworks für die Integration native Funktionen bietet. Auf diese Weise können Entwickler die Wiederverwendung von Code maximieren und gleichzeitig plattformspezifische Benutzererlebnisse bereitstellen.
Zitate:[1] https://www.suneco.nl/blogs/boost-your-xamarin-native-projects-with-mvmcross/
[2] https://dev.to/christian1006/creeating-cross-platform-xamarin-anapplications-using-the-mvmcross-framework-2920
[3] https://canbilgin.wordpress.com/tag/mvmcross/
[4] https://github.com/mvvmcross/mvmcross
[5] https://www.codeprroject.com/articles/863695/Introduction-to-mvmcross-platform
[6] https://mentormate.com/blog/6-reasons-mvmcrossspeeds-xamarin-development-personizes-ux/
[7] https://www.mvmcross.com/documentation/getting-started/mvmcross-overview
[8] https://stackoverflow.com/questions/14337063/platformspecific-ioc-in-mvmcross
[9] https://www.mvmcross.com/documentation/getting-started/getting-started
[10] https://leaware.com/creating-cross-platform-xamarin-applications-using-the-mvmcross-framework/
[11] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvm-apps-apps-with-xamarin-and-mvmcross