MVVMCross ist so konzipiert, dass der plattformspezifische Code effizient verarbeitet wird, indem die Anwendungslogik in zwei Hauptteile unterteilt wird: ein Kernprojekt und plattformspezifische Projekte. Das Kernprojekt, in der Regel eine .NET-Standardbibliothek, enthält die Geschäftslogik, die Ansichtsmodelle, -modelle und Schnittstellen für plattformspezifische Dienste. Dies ermöglicht eine maximale Code -Teilen über verschiedene Plattformen wie Android, iOS und Windows.
plattformspezifische Projekte
Jedes plattformspezifische Projekt (z. B. xamarin.android, xamarin.ios) enthält die Benutzeroberfläche und Implementierung von plattformspezifischen Diensten. Diese Projekte sind für die Initialisierung des MVVMCross-Frameworks und der Registrierung plattformspezifischer Dienste mithilfe der Setup-Klasse verantwortlich. Die Setup -Klasse fungiert als Bootstrapper für MVVMCross, sodass Entwickler das Verhalten des Frameworks für jede Plattform anpassen können.
Inversion der Kontrolle (IOC) und Abhängigkeitsinjektion
MVVMCross verwendet eine IC -Container (Inversion of Control), um Abhängigkeiten in der Anwendung zu verwalten. Auf diese Weise können plattformspezifische Dienste registriert und in die Logik des Kernprojekts injiziert werden. Wenn beispielsweise eine Anwendung zugreifen muss, kann der GPS-Dienst in der plattformspezifischen Setup-Klasse registriert und dann in die Ansichtsmodelle oder andere Teile des Kernprojekts injiziert werden.
Customizing Platform -Verhalten
Entwickler können plattformspezifisches Verhalten durch Überschreibung von Methoden in der Setup-Klasse anpassen. Zum Beispiel können Sie auf Android Methoden in "mvxandroidsetup" überschreiben, um Android-spezifische Dienste zu registrieren oder Android-spezifische Lebenszyklusereignisse zu verarbeiten. In ähnlicher Weise würden Sie auf iOS `MVXIOSSETUP` verwenden, um die iOS-spezifische Initialisierung und Serviceregistrierung zu verarbeiten.
Präsentatoren anzeigen
MVVMCross bietet auch View -Moderatoren, die für die Entscheidung verantwortlich sind, wie Ansichten auf jeder Plattform präsentiert werden. Dies ermöglicht die Anpassung der UI -Präsentationslogik, z. B. das Anzeigen von Ansichten modell oder als Teil eines Navigationsstapels, abhängig von den Konventionen der Plattform.
Plugins und Erweiterungen
MVVMCross bietet ein Plugin-Framework, mit dem Entwickler Plugins von Drittanbietern für häufige Funktionen wie Lokalisierung, Sensoren und mehr problemlos integrieren können. Diese Plugins können über mehrere Plattformen hinweg verwendet werden, wodurch die Notwendigkeit von plattformspezifischem Code weiter verringert werden.
Zusammenfassend lässt sich sagen, dass MVVMCross plattformspezifischen Code durch Bereitstellung eines strukturierten Ansatzes zur Trennung der gemeinsam genutzten Logik von plattformspezifischen Implementierungen verarbeitet. Es verwendet IOC- und Abhängigkeitsinjektion, um Plattformdienste zu verwalten, ermöglicht die Anpassung über die Setup -Klasse und unterstützt Plugins für die Erweiterung der Funktionen über Plattformen hinweg.
Zitate:[1] https://github.com/mvvmcross/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://www.mvvmcross.com/documentation/getting-started/mvmcross-overview
[5] https://stackoverflow.com/questions/14337063/platformspecific-ioc-in-mvmcross
[6] https://stackoverflow.com/questions/61641185/platformspecific-service-causses-an-exception-mvmcross-xamarin-ios
[7] https://leaware.com/creating-cross-platform-xamarin-applications-using-the-mvmcross-framework/
[8] https://www.mvvmcross.com/documentation/getting-started/mvmcross-packages
[9] https://www.codeprroject.com/articles/863695/Introduction-to-mvmcross-platform
[10] https://www.mvmcross.com/documentation/getting-started/getting-started
[11] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-setup