A konstruktor injekció az MVVMCross-ban számos kulcsfontosságú előnyt kínál, amelyek javítják a platformok közötti alkalmazások fejlesztését és karbantartását. Itt vannak a konstruktor injekciójának ebben az összefüggésben történő alkalmazásának részletes előnyei:
1. Elválasztás és tesztelhetőség **
A konstruktor injekciója lehetővé teszi az aggodalmak világos elválasztását az alkalmazás különböző alkotóelemei között. A függőségek befecskendezésével a konstruktoron keresztül könnyen kicserélheti a megvalósításokat tesztelési célokra. Ez egyszerűbbé teszi az egységtesztek írását azáltal, hogy a Szolgáltatások modell megvalósítását nyújtja, ami elengedhetetlen a robusztus és megbízható kódbázisok fenntartásához [2] [4].2. Platformspecifikus megvalósítások **
Az MVVMCross lehetővé teszi a platformspecifikus megvalósítások használatát konstruktor injekción keresztül. Például, ha van olyan szolgáltatása, amely kölcsönhatásba lép a kamerával, akkor különféle megvalósításokat nyújthat az Android és az iOS számára. Ez a rugalmasság különösen hasznos a platformok közötti fejlesztésben, ahol a különböző platformok bizonyos funkciók egyedi kezelését igényelhetik [3] [6].3. Függőségi felbontás **
Az MVVMCross egy erős NOB -tartályt (`MVX.IOCPROVIDER") használ, amely automatikusan megoldja a függőségeket az objektumépítés során. Ez azt jelenti, hogy amikor a ViewModel vagy a szolgáltatás instantizálódik, az MVVMCross automatikusan biztosítja a szükséges függőségeket, csökkentve a kézi instantáció szükségességét, és a kódot tömör és karbantarthatóbbá teszi [1] [2].4. Rugalmasság a függőség kezelésében **
A konstruktor befecskendezése lehetővé teszi a függőségek rugalmas kezelését. A szolgáltatásokat szingulettként, dinamikus példányként regisztrálhatja, vagy más életciklus -kezelési stratégiákat használhat. Ez a rugalmasság előnyös, ha különféle típusú függőségekkel foglalkozik, amelyek eltérő kezelési megközelítéseket igényelhetnek [2] [3].5. Egyszerűsített kódszerkezet **
A konstruktor injekciójának használatával a kódot rendezheti és az alap logikájára összpontosíthatja. Az injekciós mechanizmus kezeli a függőségek pillanatát és biztosítását, ami egyszerűsíti az osztályok szerkezetét, és megkönnyíti azok megértését és fenntartását [4] [7].6. Fokozott újrafelhasználhatóság **
A konstruktor injekciója elősegíti az újrafelhasználhatóságot azáltal, hogy lehetővé teszi az alkatrészek könnyen felhasználását az alkalmazás különböző részein. Mivel a függőségeket inkább a kemény kódolású injektálják, az alkatrészek modulárisabbak és alkalmazkodnak a különböző kontextusokhoz [5] [7].Összefoglalva: a konstruktor injekciója az MVVMCross-ban javítja a fejlesztési folyamatot azáltal, hogy elősegíti a leválasztást, a tesztelhetőséget, a rugalmasságot és az újrafelhasználhatóságot, és ez egy hatékony eszköz a robusztus és karbantartható platformok közötti alkalmazások felépítéséhez.
Idézetek:[1] https://www.mvvmcross.com/documentation/fundamentals/inversion-of-control-ioc
[2] https://www.mvvmcross.com/documentation/fundamentals/dependency-injection
[3] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvvm-apps-with-xamarin-and-mvvmcross
[4] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[5] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[6] https://stackoverflow.com/questions/45618740/how-to-use-ioc-constructor-injection-mvvmcross-mvvmcross-platform- Exections-M-M-M-M-M-M-M-M-M-M-M-M-M-M-M-M-M-M-T
[7] https://yanxiaodi.gitbook.io/xamarin-mvvmcross-andbook/using-mvvmcross-to-create--first-xamarin-app/creating-the-core-project/adding-anp-plass
[8] https://stackoverflow.com/questions/40737720/constructor-injection-vs-field-injection
[9] https://github.com/mvvmcross/mvvmcross/issues/3586