Az alapértelmezett IOC-tartály cseréje az MVVMCross-ban számos általános problémát vezethet be, elsősorban annak köszönhetően, hogy az MVVMCROSS hogyan integrálódik a beépített NOB tárolóval. Íme néhány kihívás, amelyekkel felmerülhet:
1. Szolgáltatás regisztrációja és szinkronizálása **
Az egyik fő kérdés annak biztosítása, hogy az összes szükséges szolgáltatás regisztrálódjon, és hogy az „IserviceProvider” szinkronizálva maradjon a „IserviceCollection” -val. Az MVVMCross a kezdeti beállítás után továbbra is regisztrálja saját szolgáltatásait, ami következetlenségeket okozhat, ha nem megfelelően kezelik. Ehhez szükség van a szolgáltató frissítésére az egyes beszedési regisztráción, ami befolyásolhatja a teljesítményt [1].2. Hiányzó mvvmcross szolgáltatások **
Az MVVMCross számos beépített szolgáltatásra támaszkodik, mint például az „imvxloggerprovider”, az „imvxSettings” és többek között. A NOB -konténer cseréjekor ezeket a szolgáltatásokat nem lehet automatikusan regisztrálni, ami indítási hibákhoz vezet. Kézzel regisztrálnia kell ezeket a szolgáltatásokat, vagy meg kell találnia a módját, hogy az MVVMCross kezelje a regisztrációját az egyedi tartályban [1].3. Életre és visszahívási problémák **
Az MVVMCross visszahívásokat használ, amikor a szolgáltatásokat regisztrálják, és amelyek bonyolultak lehetnek egy egyedi NOB adapterben. Ezenkívül az élettartamok kezelése (például Singleton, Transient) megkövetelheti az egyéni megvalósításokat, hogy megfeleljenek az MVVMCross elvárásainak [4].4. Integráció harmadik fél könyvtárakkal **
Egy másik IOC-tartály használata, mint például a .NET Core DI, lehetővé teszi a könnyebb integrációt a harmadik fél könyvtárakkal, amelyek kiterjesztési módszereket biztosítanak a regisztrációhoz (például `ihttpClientFactory", `Polly`,` Automapper`). Ugyanakkor annak biztosítása, hogy ezek a könyvtárak zökkenőmentesen működjenek az MVVMCross egyedi beállításával, kihívást jelenthet [1].5. Teljesítmény -megfontolások **
Új „IserviceProvider” példány felépítése minden alkalommal, amikor a szolgáltatások regisztráltak, teljesítményproblémákhoz vezethetnek. Ennek oka az, hogy a „BuildServiceProvider ()” többször hívják, amely erőforrások és idő szempontjából költséges lehet [1].6. Testreszabás és felülbírálás **
Az alapértelmezett IOC -tároló teljes cseréjéhez felül kell lépnie a „createIocProvider” módszert a beállítási osztályban. Ehhez olyan adapter létrehozását kell létrehozni, amely az egyéni NOB megvalósítását az MVVMCross `imvxiocProvider 'interfészéhez térképezi. Ez a folyamat összetett lehet, és az MVVMCross sajátos követelményeinek gondos kezelését igényli [4].7. Platformspecifikus megfontolások **
Ha olyan platformokkal dolgozik, mint a Xamarin, további megfontolások merülhetnek fel ezen környezetek speciális beállítási és inicializálási folyamata miatt. Például annak biztosítása, hogy az Android-specifikus szolgáltatások megfelelően regisztrálódjanak és megoldódjanak [10].Összefoglalva: az alapértelmezett IOC-tárolók cseréje az MVVMCross-ban magában foglalja a szolgáltatás regisztrációjának, a szinkronizálásnak, a hiányzó szolgáltatásoknak, az élethosszig tartó menedzsmentnek a kezelését, a harmadik fél könyvtárakkal való integrációját, a teljesítmény-optimalizációt és a platformspecifikus megfontolást. Ezen területek mindegyike gondos kezelést igényel az alkalmazás zökkenőmentes átmenetének és megfelelő funkcionalitásának biztosítása érdekében.
Idézetek:[1] https://stackoverflow.com/questions/64478974/replace-default-ioc-container-in-mvvmcross
[2] https://yanxiaodi.gitbook.io/xamarin-mvvmcross-handbook/using-mvvmcross-to-create--first-xamarin-app/creating-the-core-project/adding-anp-plass
[3] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[4] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-andsetup
[5] https://learn.microsoft.com/en-us/archive/msdn-magazine/2013/february/mvvm-ioc-containers-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-droid-specific-ioc-in-mvvmcross-constructor-issue/53761392