Použitie Microsoft.extensions.Dependencyinjekcie s MVVMCross môže predstavovať niekoľko výziev a známych problémov:
1. Nekompatibilita s procesom spustenia MVVMCross: MVVMCross vyžaduje schopnosť vyriešiť komponenty čiastočne prostredníctvom procesu nastavenia a potom pokračovať v registrácii viacerých komponentov. Avšak Microsoft.Extensions.DependenCyInjection (panidi) vyžaduje, aby boli všetky komponenty zaregistrované pred zavolaním `.build ()` v zbierke služieb. Tento zásadný rozdiel spôsobuje, že tieto dva systémy sú nezlučiteľné bez ďalších riešení, ako je napríklad manuálne preklady služieb z jedného kontajnera do druhého [1].
2. Dvojstupňový proces spustenia: Na využitie MS.Di s MVVMCross, vývojári často zostavujú zbierku služieb Ms.DI a potom preložia svoje služby do inštancie MVVMCross `IMVIOCProvider`. Tento prístup predstavuje dvojstupňový proces spustenia, ktorý môže byť ťažkopádny a môže viesť k ďalšej zložitosti a potenciálnym problémom [1].
3. Obmedzenia injekcie závislosti: Kontajner MVVMCross's IOC zaobchádza s aspektom singletonu na úrovni rozhrania, nie s okamžitým typom. To znamená, že ak trieda implementuje viac rozhraní, MVVMCross môže pre každé rozhranie vytvoriť samostatné inštancie, pokiaľ nie je výslovne spravované [4]. Aj keď to priamo súvisí s panidi, zdôrazňuje potrebu starostlivého riadenia pri integrácii rôznych injekčných systémov závislosti.
4. Problémy s inováciou a kompatibilitou: Inovácia verzií MVVMCross môže niekedy zaviesť problémy s injekciou závislosti, najmä pri používaní modelov Base View. Napríklad zmeny logiky výberu konštruktora medzi verziami môžu ovplyvniť spôsob injekcie závislosti [2].
Na prekonanie týchto výziev sa vývojári často rozhodujú zlepšiť funkčnosť MVVMCross bez toho, aby nahradili svoj základný kontajner IOC. To umožňuje použitie dodatočných rámcov na vstrekovanie závislosti, ako je MS.DI spolu s MVVMCross, čo poskytuje flexibilitu pri výbere poskytovateľa IOC [1] [5]. Vyžaduje si to však starostlivé nastavenie a správu, aby sa predišlo konfliktom a zabezpečilo plynulú integráciu.
Stručne povedané, pri používaní Microsoft.Extensions.Dependencyinjekcia s MVVMCross je možná, vyžaduje si dôkladné zváženie procesu spustenia, potenciálnych nekompatibility a starostlivé riadenie závislostí, aby sa predišlo známym problémom.
Citácie:[1] https://github.com/mvvmcross/mvvmcross/issues/4436
[2] https://github.com/mvvmcross/mvvmcross/issues/4183
[3] https://docs.partiCular.net/nservicebus/dependency-inccant/extensions-dependencincrestion
[4] https://stackoverflow.com/questions/23700121/Possible-bug-with-dependency-incance-on-mvvmcross
[5] https://github.com/mvvmcross/mvvmcross/issues/3804
[6] https://www.mvvmcross.com/documentation/funmamentals/data-binding
[7] https://msicc.net/using-microsofts-extensions-dependencyIncence-package-in-xamarin-forms-mvvm-applications-part-2/
[8] https://www.mvvmcross.com/documentation/funmamentals/dependency-injekcia