MVVMCross je navržen tak, aby efektivně zvládl kód specifický pro platformu oddělením aplikační logiky do dvou hlavních částí: základní projekt a projekty specifické pro platformu. Hlavní projekt, obvykle standardní knihovna .NET, obsahuje obchodní logiku, modely zobrazení, modely a rozhraní pro služby specifické pro platformu. To umožňuje maximální sdílení kódu na různých platformách, jako jsou Android, iOS a Windows.
Projekty specifické pro platformu
Každý projekt specifický pro platformu (např. Xamarin.Android, xamarin.ios) obsahuje uživatelské rozhraní a implementaci služeb specifických pro platformu. Tyto projekty jsou zodpovědné za inicializaci rámce MVVMCross a služby specifické pro registraci platformy pomocí třídy nastavení. Třída nastavení funguje jako bootstrapper pro MVVMCross, což vývojářům umožňuje přizpůsobit chování rámce pro každou platformu.
Inverze kontroly (IOC) a injekce závislosti
MVVMCross používá kontejner inverze kontrolního (IOC) ke správě závislostí napříč aplikací. To umožňuje registraci a injekci služeb specifických pro platformu do logiky hlavního projektu. Pokud například aplikace potřebuje přístup k lokalizačním službám GPS, může být služba GPS zaregistrována ve třídě nastavení specifické pro platformu a poté vložena do modelů pohledu nebo jiných částí hlavního projektu.
Přizpůsobení chování platformy
Vývojáři mohou přizpůsobit chování specifické pro platformu přesahujícími metodami ve třídě nastavení. Například na Androidu můžete přepsat metody v `mvxandroidSetup` pro registraci služeb specifických pro Android nebo zpracování akcí specifických pro Android. Podobně na iOS byste použili „mvxiossetup“ ke zpracování inicializace a registrace služby specifické pro iOS.
Zobrazit přednášející
MVVMCross také poskytuje přednášející zobrazení, kteří jsou zodpovědní za rozhodování o tom, jak jsou zobrazení na každé platformě prezentovány. To umožňuje přizpůsobení logiky prezentace uživatelského rozhraní, jako je zobrazování pohledy modálně nebo jako součást navigačního zásobníku, v závislosti na konvencích platformy.
Pluginy a rozšíření
MVVMCross nabízí rámec pluginů, který umožňuje vývojářům snadno integrovat pluginy třetích stran pro společné funkce, jako je lokalizace, senzory a další. Tyto pluginy lze použít na více platformách, což dále snižuje potřebu kódu specifického pro platformu.
Stručně řečeno, MVVMCross zpracovává kód specifický pro platformu poskytnutím strukturovaného přístupu k oddělení sdílené logiky od implementace specifických pro platformu. Používá injekci IOC a závislosti ke správě platformových služeb, umožňuje přizpůsobení prostřednictvím třídy nastavení a podporuje pluginy pro rozšíření funkčnosti napříč platformami.
Citace:[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-auses-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/gettingstarted
[11] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-and-setup