Zamenjava privzetega vsebnika IOC v MVVMcrossu lahko uvede več pogostih vprašanj, predvsem zaradi načina, kako se MVVMcross integrira s svojo vgrajeno vsebnostjo IOC. Tu je nekaj izzivov, s katerimi bi se lahko srečali:
1. Registracija storitev in sinhronizacija **
Eno glavnih vprašanj je zagotavljanje, da so vse potrebne storitve registrirane in da "iServiceProvider" ostaja sinhroniziran z "iServiceCollection". MVVMcross še naprej registrira lastne storitve po prvotni nastavitvi, kar lahko privede do neskladnosti, če se ne ravna pravilno. To zahteva posodobitev ponudnika pri vsaki registraciji zbirke, kar lahko vpliva na uspešnost [1].2. Manjkajoče storitve MVVMcross **
MVVMcross se med drugim opira na več vgrajenih storitev, kot so `imvxloggerprovider`,` imvxsettings` in `imvxstart`. Pri zamenjavi vsebnika MOK teh storitev morda ne bodo samodejno registrirane, kar vodi do napak v zagonu. Te storitve morate ročno registrirati ali poiskati način, kako MVVMcross omogočiti, da se spopade z njihovo registracijo v vašem zabojniku po meri [1].3. Vprašanja o življenjskem in povratnem klicu **
MVVMcross uporablja povratne klice, ko so storitve registrirane, kar je lahko težavno ravnati v prilagojenem adapterju MOC. Poleg tega lahko upravljanje življenjskih časov (npr. Singleton, prehodni) zahteva izvajanje po meri, da se ujema z MVVMcrossovimi pričakovanji [4].4. Integracija s knjižnicami tretjih oseb **
Uporaba drugačnega vsebnika IOC, kot je .NET Core's DI, omogoča lažjo integracijo s tretjimi knjižnicami, ki zagotavljajo metode razširitve za registracijo (npr. "IhttpclientFactory", "Polly", "Automapper`). Vendar pa je zagotoviti, da te knjižnice brezhibno delujejo z nastavitvijo MVVMcross po meri [1].5. Upoštevanje uspešnosti **
Izdelava novega primerka `iServiceProvider" vsakič, ko se storitve registrirajo, lahko privede do težav z uspešnostjo. To je zato, ker se `BuildingServiceProvider ()` imenuje večkrat, kar je lahko drage glede na vire in čas [1].6. Prilagoditev in preglasitev **
Če želite v celoti zamenjati privzeti vsebnik IOC, morate v svojem nastavitvenem razredu preglasiti metodo `CreateIOCProvider`. To zahteva ustvarjanje adapterja, ki preslika vašo izvedbo MOC po meri na MVVMcrossov vmesnik `imvxiocprovider`. Ta postopek je lahko zapleten in zahteva skrbno ravnanje s posebnimi zahtevami MVVMcrossa [4].7. Platform-specifični pomisleki **
Pri delu s platformami, kot je Xamarin, se lahko pojavijo dodatni premisleki zaradi posebnih procesov nastavitve in inicializacije teh okolij. Na primer zagotavljanje, da so storitve, specifične za Android, pravilno registrirane in rešene [10].Če povzamemo, zamenjava privzetega vsebnika IOC v MVVMcross vključuje reševanje registracije storitev, sinhronizacijo, manjkajoče storitve, upravljanje življenjske dobe, integracijo s knjižnicami tretjih oseb, optimizacijo uspešnosti in platformo, specifične za platformo. Vsako od teh področij zahteva skrbno ravnanje, da se zagotovi nemoten prehod in pravilno funkcionalnost aplikacije.
Navedbe:[1] https://stackoverflow.com/questions/6478974/replace-default-ioc-canner-in-mvvmcross
[2] https://yanxiaodi.gitbook.io/xamarin-mvvmcross-handBook/using-mvvmcross-cto-create-your-first-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-and-setup
[5] https://learn.microsoft.com/en-us/archive/msdn-magazine/2013/february/mvvm-ioc-cantainers-and-mvvm
[6] https://docs.spring.io/spring-framework/docs/4.3.9.release/spring-framework-reference/html/beans.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-pecific-ioc-in-mvvmcross-constructor-issue/53761392