MVVMCross är utformad för att hantera plattformsspecifik kod effektivt genom att separera applikationslogiken i två huvuddelar: ett kärnprojekt och plattformsspecifika projekt. Kärnprojektet, vanligtvis ett .NET-standardbibliotek, innehåller affärslogik, visningsmodeller, modeller och gränssnitt för plattformsspecifika tjänster. Detta möjliggör maximal koddelning på olika plattformar som Android, iOS och Windows.
plattformsspecifika projekt
Varje plattformsspecifikt projekt (t.ex. xamarin.android, xamarin.ios) innehåller användargränssnittet och implementering av plattformsspecifika tjänster. Dessa projekt ansvarar för att initiera MVVMCross-ramverket och registrera plattformsspecifika tjänster med hjälp av installationsklassen. Uppsättningsklassen fungerar som en bootstrapper för MVVMCross, vilket gör att utvecklare kan anpassa ramverkets beteende för varje plattform.
Inversion av kontroll (IOC) och beroendeinjektion
MVVMCross använder en inversion av kontroll (IOC) behållare för att hantera beroenden över applikationen. Detta gör att plattformsspecifika tjänster kan registreras och injiceras i kärnprojektets logik. Till exempel, om en applikation behöver komma åt GPS-platstjänster, kan GPS-tjänsten registreras i den plattformsspecifika installationsklassen och sedan injiceras i visningsmodellerna eller andra delar av kärnprojektet.
Anpassa plattformsbeteende
Utvecklare kan anpassa plattformsspecifikt beteende genom att åsidosätta metoder i installationsklassen. Till exempel på Android kan du åsidosätta metoder i `mvxandroidsetup 'för att registrera Android-specifika tjänster eller hantera Android-specifika livscykelevenemang. På samma sätt, på iOS, skulle du använda `mvxiossetup 'för att hantera iOS-specifik initialisering och serviceregistrering.
Visa presentatörer
MVVMCross tillhandahåller också visningspresentatörer, som är ansvariga för att bestämma hur vyer presenteras på varje plattform. Detta möjliggör anpassning av UI -presentationslogiken, såsom att visa vyer modalt eller som en del av en navigationsbunt, beroende på plattformens konventioner.
plugins och tillägg
MVVMCross erbjuder en plugin-ram som gör det möjligt för utvecklare att enkelt integrera tredjeparts plugins för vanliga funktioner som lokalisering, sensorer och mer. Dessa plugins kan användas över flera plattformar, vilket ytterligare minskar behovet av plattformsspecifik kod.
Sammanfattningsvis hanterar MVVMCross plattformsspecifik kod genom att tillhandahålla en strukturerad strategi för att separera delad logik från plattformsspecifika implementeringar. Den använder IOC och beroendeinjektion för att hantera plattformstjänster, tillåter anpassning via installationsklassen och stöder plugins för att utöka funktionaliteten över plattformar.
Citeringar:[1] https://github.com/mvvmcross/mvvmcross
]
[3] https://canbilgin.wordpress.com/tag/mvvmcross/
[4] https://www.mvvmcross.com/documentation/geting-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-io
[7] https://leaware.com/creating-cross-platform-xamarin-applications-using-the-mvvmcross-ramework/
[8] https://www.mvvmcross.com/documentation/geting-started/mvvmcross-packages
[9] https://www.codeproject.com/articles/863695/introduktion-to-mvvmcross-platform
[10] https://www.mvvmcross.com/documentation/geting-started/geting-started
[11] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-and-setup