Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Comment MVVMCross gère-t-il le code spécifique à la plate-forme


Comment MVVMCross gère-t-il le code spécifique à la plate-forme


MVVMCross est conçu pour gérer efficacement le code spécifique à la plate-forme en séparant la logique d'application en deux parties principales: un projet de base et des projets spécifiques à la plate-forme. Le projet de base, généralement une bibliothèque standard .NET, contient la logique métier, les modèles de vue, les modèles et les interfaces pour les services spécifiques à la plate-forme. Cela permet un partage de code maximal sur différentes plates-formes comme Android, iOS et Windows.

Projets spécifiques à la plate-forme

Chaque projet spécifique à la plate-forme (par exemple, xamarin.android, xamarin.ios) contient l'interface utilisateur et la mise en œuvre de services spécifiques à la plate-forme. Ces projets sont responsables de l'initialisation du cadre MVVMCross et de l'enregistrement des services spécifiques à la plate-forme à l'aide de la classe de configuration. La classe de configuration agit comme un bootstrapper pour MVVMCross, permettant aux développeurs de personnaliser le comportement du cadre pour chaque plate-forme.

Inversion du contrôle (CIO) et injection de dépendance

MVVMCross utilise un conteneur d'inversion de contrôle (CIO) pour gérer les dépendances à travers l'application. Cela permet à des services spécifiques à la plate-forme d'être enregistrés et injectés dans la logique du projet de base. Par exemple, si une application doit accéder aux services de localisation GPS, le service GPS peut être enregistré dans la classe de configuration spécifique à la plate-forme, puis injecté dans les modèles de vue ou dans d'autres parties du projet de base.

Personnalisation du comportement de la plate-forme

Les développeurs peuvent personnaliser le comportement spécifique à la plate-forme en remplaçant des méthodes dans la classe de configuration. Par exemple, sur Android, vous pouvez remplacer les méthodes dans `MVXAndroidSetup» pour enregistrer des services spécifiques à Android ou gérer les événements de cycle de vie spécifiques à Android. De même, sur iOS, vous utiliseriez «MvxiSsetup» pour gérer l'initialisation et l'enregistrement de service spécifiques à l'iOS.

Voir les présentateurs

MVVMCross fournit également des présentateurs de vue, qui sont chargés de décider comment les vues sont présentées sur chaque plate-forme. Cela permet la personnalisation de la logique de présentation de l'interface utilisateur, comme l'affichage des vues modalement ou dans le cadre d'une pile de navigation, en fonction des conventions de la plate-forme.

Plugins et extensions ###

MVVMCross propose un cadre de plugin qui permet aux développeurs d'intégrer facilement des plugins tiers pour des fonctionnalités communes comme la localisation, les capteurs, etc. Ces plugins peuvent être utilisés sur plusieurs plates-formes, réduisant encore le besoin de code spécifique à la plate-forme.

En résumé, MVVMCross gère le code spécifique à la plate-forme en fournissant une approche structurée pour séparer la logique partagée des implémentations spécifiques à la plate-forme. Il utilise le CIO et l'injection de dépendance pour gérer les services de plate-forme, permet la personnalisation via la classe de configuration et prend en charge les plugins pour étendre les fonctionnalités sur les plates-formes.

Citations:
[1] https://github.com/mvvmcross/mvvmcross
[2] https://dev.to/christian1006/creting-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-causes-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-mvvmcross-platform
[10] https://www.mvvmcross.com/documentation/getting-started/getting-started
[11] https://www.mvvmcross.com/documentation/advanced/custumising-using-app-and-setup