MVVMCROSS obsługuje kod specyficzny dla platformy za pośrednictwem kilku mechanizmów, umożliwiając programistom tworzenie aplikacji międzyplatformowych przy jednoczesnym wykorzystaniu natywnych funkcji platformy. Oto szczegółowy przegląd tego, jak MVVMCROSS ułatwia kod specyficzny dla platformy:
1. Rozdzielenie obaw **
Aplikacje MVVMCROSS są zwykle ustrukturyzowane na dwie główne części: podstawowe projekty i projekty interfejsu użytkownika specyficznego dla platformy. Podstawowy projekt, często wdrażany jako przenośna biblioteka klas (PCL) lub .NET Standard Library, zawiera logikę biznesową, modele, modele i interfejsy dla usług specyficznych dla platformy. Ta separacja pozwala na maksymalne ponowne wykorzystanie kodu między platformami, zachowując jednocześnie kod specyficzny dla platformy w projektach interfejsu użytkownika [2] [7].2. Inwersja kontroli (MKOl) i wstrzyknięcie zależności **
MVVMCROSS używa kontenera MKOl do zarządzania zależnościami. Umożliwia to programistom rejestrację usług specyficznych dla platformy w projektach specyficznych dla platformy i wstrzykiwanie ich do modeli widzenia podstawowego projektu. Na przykład, jeśli aplikacja musi uzyskać dostęp do aparatu, projekt podstawowy może zdefiniować interfejs dostępu do aparatu, a każdy projekt specyficzny dla platformy może zapewnić własną implementację tego interfejsu. Kontener MKOC rozwiąże te zależności w czasie wykonywania, zapewniając, że stosuje się odpowiednią usługę specyficzną dla platformy [2] [8] [11].3. Usługi specyficzne dla platformy **
Usługi specyficzne dla platformy są wdrażane w natywnych projektach interfejsu użytkownika. Usługi te są zarejestrowane w klasie konfiguracji każdego projektu platformy. Klasa konfiguracji jest odpowiedzialna za ładowanie MVVMCROSS i rejestrowanie usług specyficznych dla platformy w kontenerze MKOC. Umożliwia to, że modele widokowe w podstawowym projekcie używają funkcjonalności specyficznej dla platformy bez bezpośredniego odniesienia interfejsów API specyficznych dla platformy [2] [7].4. Framework wtyczki **
MVVMCROSS zawiera framework wtyczki, który umożliwia programistom łatwą integrację funkcji specyficznych dla platformy z ich aplikacjami. Wtyczki mogą zapewniać funkcje, takie jak lokalizacja GPS, lokalizacja, czujniki i wiele innych. Te wtyczki są zarejestrowane w kontenerze IOC, umożliwiając modele widoku dostępu do funkcji specyficznych dla platformy poprzez wtrysk zależności. Ramy te obsługują również pozorne implementacje do celów testowych [4] [11].5. Konfigurowalny silnik wiązania **
MVVMCROSS zapewnia konfigurowalny silnik wiązania, który umożliwia programistom tworzenie niestandardowych powiązań dla widoków specyficznych dla platformy. Ta funkcja jest szczególnie przydatna podczas pracy z natywnymi elementami sterującymi, które nie obsługują standardowych mechanizmów wiązania danych. Określając niestandardowe powiązania, programiści mogą upewnić się, że ich modele widoku są odpowiednio podłączone do widoków specyficznych dla platformy [4].6. Prezenterzy platformy **
MVVMCROSS używa prezenterów specyficznych dla platformy (np. „ImvxiOSViewPresenter`,` ImvxandroidviewPresenter`) do zarządzania sposobem wyświetlania widoków na każdej platformie. Ci prezenterzy pozwalają na dostosowanie logiki prezentacji, umożliwiając programistom dostosowanie zachowania interfejsu użytkownika do wymagań określonej platformy [3].Podsumowując, MVVMCROSS obsługuje kod specyficzny dla platformy, zapewniając ustrukturyzowane podejście do oddzielania logiki biznesowej od implementacji specyficznej dla platformy, wykorzystania MKOl i iniekcji zależności do zarządzania usługami oraz oferując dostosowywane ramy wiązania i wtyczki do integracji funkcji natywnych. Umożliwia to programistom zmaksymalizowanie ponownego użycia kodu przy jednoczesnym dostarczaniu doświadczeń użytkowników specyficznych dla platformy.
Cytaty:[1] https://www.suneco.nl/blogs/boost-your-xamarin-nation-projects-with-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://github.com/mvvmcross/mvvmcross
[5] https://www.codeproject.com/articles/863695/introdukcja-to-mvvmcross-platform
[6] https://mentormate.com/blog/6-Rasoning-mvvmcross-speeds-xamarin-development-tersonalizes-ux/
[7] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[8] https://stackoverflow.com/questions/14337063/platform-specific-ioc-in-mvvmcross
[9] https://www.mvvmcross.com/documentation/getting-started/getting-started
[10] https://leaware.com/creating-cross-platform-xamarin-applications-using-the-mvvmcross-framework/
[11] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvvm-apps-with-xamarin-and-mvvmcross