Výmena predvoleného kontajnera IOC v MVVMCross môže zaviesť niekoľko bežných problémov, predovšetkým kvôli tomu, ako sa spoločnosť MVVMCross integruje so vstavaným kontajnerom IOC. Tu sú niektoré z výziev, s ktorými by ste sa mohli stretnúť:
1. Registrácia a synchronizácia služieb **
Jedným z hlavných problémov je zabezpečenie registrácie všetkých potrebných služieb a že „Iserviceprovider“ zostane synchronizovaný s `iServiceCollection`. MVVMCross naďalej zaregistruje svoje vlastné služby po počiatočnom nastavení, čo môže viesť k nezrovnalostiam, ak sa s nimi nebude správne zaobchádzať. Vyžaduje si to aktualizáciu poskytovateľa pri každej registrácii zbierky, čo môže mať vplyv na výkon [1].2. Chýbajúce služby MVVMCross **
MVVMCROSS sa okrem iného spolieha na niekoľko vstavaných služieb, ako napríklad `IMVXLoggerProvider`,` IMVXSettings` a `IMVXStart`. Pri výmene kontajnera IOC tieto služby nemusia byť automaticky zaregistrované, čo vedie k zlyhaniam spustenia. Tieto služby musíte ručne zaregistrovať alebo nájsť spôsob, ako nechať MVVMCross zvládnuť ich registráciu v rámci vášho vlastného kontajnera [1].3. Problémy s životnosťou a spätným volaním **
MVVMCross používa spätné volania, keď sú služby zaregistrované, čo môže byť zložité zvládnuť vo vlastnom adaptéri IOC. Okrem toho môže riadenie životnosti (napr. Singleton, prechodné) vyžadovať vlastnú implementáciu, aby zodpovedala očakávaniam MVVMCross [4].4. Integrácia s knižnicami tretích strán **
Použitie iného kontajnera IOC, ako je DI .NET Core, umožňuje ľahšiu integráciu s knižnicami tretích strán, ktoré poskytujú metódy rozšírenia pre registráciu (napr. `IHTTPCLIENTFACTORY`,` Polly`, `AUTOPPER`). Zabezpečenie, že tieto knižnice pracujú hladko s vlastným nastavením MVVMCross, však môže byť náročné [1].5. Úvahy o výkonnosti **
Budovanie novej inštancie „IserviceProvider“ zakaždým, keď sú služby zaregistrované, môže viesť k problémom s výkonom. Dôvodom je skutočnosť, že „BuildServiceProvider ()` sa nazýva opakovane, čo môže byť nákladné z hľadiska zdrojov a času [1].6. Prispôsobenie a prevádzanie **
Ak chcete úplne nahradiť predvolený kontajner IOC, musíte vo svojej triede nastavenia prepísať metódu `CreateIOCProvider`. Vyžaduje si to vytvorenie adaptéra, ktorý mapuje vašu vlastnú implementáciu IOC na rozhranie MVVMCross's 'IMVXIOCProvider`. Tento proces môže byť zložitý a vyžaduje starostlivé zaobchádzanie s konkrétnymi požiadavkami MVVMCross [4].7. Úvahy špecifické pre platformu **
Pri práci s platformami, ako je Xamarin, môžu vzniknúť ďalšie úvahy v dôsledku špecifických procesov nastavenia a inicializácie týchto prostredí. Napríklad zabezpečenie toho, aby boli služby špecifické pre Android správne zaregistrované a vyriešené [10].Stručne povedané, nahradenie predvoleného kontajnera IOC v MVVMCross zahŕňa riešenie registrácie služieb, synchronizáciu, chýbajúce služby, celoživotnú správu, integráciu s knižnicami tretích strán, optimalizáciu výkonu a úvahy špecifické pre platformu. Každá z týchto oblastí vyžaduje starostlivé zaobchádzanie, aby sa zabezpečila hladký prechod a správna funkčnosť aplikácie.
Citácie:[1] https://stackoverflow.com/questions/64478974/replace-default-ioc-container-in-mvvvmcross
Https://yanxiaodi.gitbook.olio/xamarin-mvvmcross-wandbook/using-mvvmcross-to-create-your-first-xamarin-App/creating-the-core-project
[3] https://www.mvvmcross.com/documentation/funmamentals/viewmodel-lifecycle
[4] https://www.mvvmcross.com/documentation/advanced/custoughing-using-app-and-setup
[5] https://learn.microsoft.com/en-us/archive/msdn-magazine/2013/february/mvvm-ioc-containers-and-and-mvvvm
[6] https://docs.spring.io/spring-framework/docs/4.3.9.rease/spring-framework-reference/html/beans.html
[7] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-verview
[8] https://www.mvvmcross.com/documentation/tutorials/tipcalc/the-core-project
[9] https://www.mvvmcross.com/documentation/funmamentals/inversion-of-control-ioc
[10] https://stackoverflow.com/questions/53752857/xamarin-android-specific-ioc-in-mvvvmcross-constructor-issue/53761392