A Microsoft.Extensions.EfendencyInjektálás használata az MVVMCross -szal számos kihívást és ismert problémát jelenthet:
1. Összeegyeztethetetlenség az MVVMCross indítási folyamatával: Az MVVMCross megköveteli az alkatrészek részleges megoldásának képességét a beállítási folyamaton keresztül, majd folytatja a további összetevők regisztrációját. A Microsoft.Extensions.EpendencyInjection (MS.DI) azonban minden összetevőt regisztrálni kell, mielőtt a „.Build ()` telefonon hívja a szolgáltatás gyűjteményét. Ez az alapvető különbség a két rendszert összeegyeztethetetlenné teszi további megoldások nélkül, például a szolgáltatások manuális fordítása az egyik konténerről a másikra [1].
2. kétlépcsős indítási folyamat: Az MS.DI MVVMCross-szal történő kihasználásához a fejlesztők gyakran készítenek egy MS.DI szolgáltatásgyűjteményt, majd szolgáltatásait az MVVMCross `imvxiocProvider` példányba fordítják. Ez a megközelítés bevezet egy kétlépcsős indítási folyamatot, amely nehézkes lehet, és további összetettséghez és potenciális kérdésekhez vezethet [1].
3. Függőségi injekciós korlátozások: Az MVVMCross IOC -konténerje az interfész szintjén kezeli a Singleton aspektusát, nem pedig az azonnali típusú. Ez azt jelenti, hogy ha egy osztály több interfészet hajt végre, akkor az MVVMCross külön példányokat hozhat létre minden egyes felülethez, kivéve, ha kifejezetten kezelik [4]. Noha ez nem kapcsolódik közvetlenül az Ms.DI -hez, rávilágít a gondos kezelés szükségességére a különböző függőségi injekciós rendszerek integrálásakor.
4. Frissítés és kompatibilitási problémák: Az MVVMCross verziók frissítése néha olyan kérdéseket vezethet be, amelyek függőségi injekcióval vannak, különösen az alapvető nézetmodellek használatakor. Például a verziók közötti konstruktor kiválasztási logikájának változásai befolyásolhatják a függőségek injektálásának módját [2].
E kihívások leküzdése érdekében a fejlesztők gyakran úgy döntenek, hogy javítják az MVVMCross funkcionalitását anélkül, hogy kicserélnék a Core IOC -tartályt. Ez lehetővé teszi olyan további függőségi injekciós keretek, mint például az MS.DI MVVMCross használatát, rugalmasságot biztosítva a NOB szolgáltató kiválasztásában [1] [5]. Ehhez azonban gondos beállítást és vezetést igényel a konfliktusok elkerülése és a zökkenőmentes integráció biztosítása érdekében.
Összefoglalva: a Microsoft.Extensions.EfendencyInction MVVMCross használatakor lehetséges, az ismert kérdések elkerülése érdekében az indítási folyamat, a potenciális összeférhetetlenségek és a függőségek gondos kezelésének gondos mérlegelése szükséges.
Idézetek:[1] https://github.com/mvvmcross/mvvmcross/issues/4436
[2] https://github.com/mvvmcross/mvvmcross/issues/4183
[3] https://docs.particular.net/nservicebus/dependency-injection/extensions-dependencyInjection
[4] https://stackoverflow.com/questions/23700121/possible-bug-with-dependency-injection-mvvmcross
[5] https://github.com/mvvmcross/mvvmcross/issues/3804
[6] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[7] https://msicc.net/using-microsofts-extensions-dependencyinjection-package-in-xamarin-forms-mvvm-applications-PART-2/
[8] https://www.mvvmcross.com/documentation/fundamentals/dependency-inject