Zastąpienie domyślnego kontenera IOC w MVVMCross może wprowadzić kilka typowych problemów, przede wszystkim ze względu na sposób integracji MVVMCross z wbudowanym pojemnikiem MKOC. Oto niektóre z wyzwań, które możesz napotkać:
1. Rejestracja i synchronizacja usługi **
Jednym z głównych problemów jest upewnienie się, że wszystkie niezbędne usługi zostaną zarejestrowane i że „iserviceProvider” pozostaje zsynchronizowany z „IserviceCollection”. MVVMCROSS nadal rejestruje własne usługi po wstępnej konfiguracji, co może prowadzić do niespójności, jeśli nie jest właściwie obsługi. Wymaga to aktualizacji dostawcy przy każdej rejestracji kolekcji, co może wpłynąć na wydajność [1].2. Brak usług MVVMCROSS **
MVVMCROSS opiera się między innymi na kilku wbudowanych usługach, takich jak `IMVXLoggerProvider`,` IMVXSettings` i `IMVXStart`. Podczas wymiany kontenera MKOC usługi te mogą nie być automatycznie zarejestrowane, co prowadzi do awarii uruchamiania. Musisz ręcznie zarejestrować te usługi lub znaleźć sposób, aby umożliwić MVVMCROSS obsługi ich rejestracji w niestandardowym kontenerze [1].3. Problemy z życiem i oddzwonieniem **
MVVMCROSS używa zwrotów zwrotnych po zarejestrowaniu usług, co może być trudne do obsługi w niestandardowym adapterze MKOl. Ponadto zarządzanie czasami życia (np. Singleton, przejściowe) może wymagać niestandardowej implementacji, aby spełnić oczekiwania MVVMCross [4].4. Integracja z bibliotekami stron trzecich **
Korzystanie z innego kontenera IOC, takiego jak DI .NET Core umożliwia łatwiejszą integrację z bibliotekami stron trzecich, które zapewniają metody rozszerzenia do rejestracji (np. „IhttpclientFactory”, `Polly`,` Automapper`). Jednak upewnienie się, że te biblioteki działają bezproblemowo przy niestandardowej konfiguracji MVVMCROSS może być trudne [1].5. Rozważania dotyczące wydajności **
Budowanie nowej instancji „IserviceProvider” za każdym razem, gdy zarejestrowane są usługi, może prowadzić do problemów z wydajnością. Wynika to z faktu, że „buildServiceProvider () jest wielokrotnie wywoływany, co może być kosztowne pod względem zasobów i czasu [1].6. Dostosowywanie i nadrzędność **
Aby w pełni wymienić domyślny kontener IOC, musisz zastąpić metodę „CreateiOcProvider” w klasie konfiguracji. Wymaga to utworzenia adaptera, który mapuje niestandardową implementację MKOl na interfejs „IMVXIOCPROVIDER” MVVMCROSS. Proces ten może być złożony i wymaga starannego obsługi konkretnych wymagań MVVMCROSS [4].7. Rozważania dotyczące platformy **
Podczas pracy z platformami takimi jak Xamarin mogą pojawić się dodatkowe rozważania ze względu na konkretne procesy konfiguracji i inicjalizacji tych środowisk. Na przykład upewnienie się, że usługi specyficzne dla Androida są odpowiednio zarejestrowane i rozwiązane [10].Podsumowując, zastąpienie domyślnego kontenera IOC w MVVMCROSS obejmuje rejestrację usług, synchronizację, brakujące usługi, zarządzanie dożywotnią, integracja z bibliotekami stron trzecich, optymalizację wydajności i rozważania specyficzne dla platformy. Każdy z tych obszarów wymaga starannego obsługi, aby zapewnić płynne przejście i właściwą funkcjonalność aplikacji.
Cytaty:[1] https://stackoverflow.com/questions/64478974/replace-default-ioc-container-in-mvvmcross
[2] https://yanxiaodi.gitbook.io/xamarin-mvvmcross handbook/using-mvvmcross-to-create-liurst-xamarin-app/creating-the-core-project/adding-an-app-class
[3] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[4] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-andetup
[5] https://learn.microsoft.com/en-us/archive/msdn-magazine/2013/futy/mvvm-ioc-containers-and-mvvm
[6] https://docs.spring.io/spring-framework/docs/4.3.9.release/spring-framework-reference/html/beanss.html
[7] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[8] https://www.mvvmcross.com/documentation/tutorials/tipcalc/the-core-project
[9] https://www.mvvmcross.com/documentation/fundamentals/inversion-of-control-ioc
[10] https://stackoverflow.com/questions/53752857/xamarin-android-specific-ioc-in-mvvmcross-constructor-issue/53761392