Het gebruik van Microsoft.Extensions.dependencyInjectie met MVVMCross kan verschillende uitdagingen en bekende problemen opleveren:
1. Incompatibiliteit met het opstartproces van MVVMCross: MVVMCROSS vereist de mogelijkheid om componenten halverwege het installatieproces op te lossen en vervolgens door te gaan met het registreren van meer componenten. Microsoft.extensions.dependencyInjection (mevrouw Di) vereist echter dat alle componenten worden geregistreerd voordat u `.build ()` op de servicecollectie belt. Dit fundamentele verschil maakt de twee systemen onverenigbaar zonder extra oplossingen, zoals handmatig vertalen van diensten van de ene container naar de andere [1].
2. Tweetraps opstartproces: om mevrouw Di met MVVMCross te benutten, bouwen ontwikkelaars vaak een mevrouw Di-servicecollectie en vertalen vervolgens zijn services in de instantie van MVVMCross `ImvxiocProvider '. Deze aanpak introduceert een tweetraps opstartproces, dat omslachtig kan zijn en kan leiden tot extra complexiteit en potentiële problemen [1].
3. Beperkingen van afhankelijkheidsinjectie: MVVMCross's IOC -container behandelt het singleton -aspect op interface -niveau, niet het geïnstalleerde type. Dit betekent dat als een klasse meerdere interfaces implementeert, MVVMCross voor elke interface afzonderlijke instanties kan maken, tenzij expliciet beheerd [4]. Hoewel dit niet direct gerelateerd is aan mevrouw Di, benadrukt het de noodzaak van zorgvuldig beheer bij het integreren van verschillende afhankelijkheidsinjectiesystemen.
4. Upgrade- en compatibiliteitsproblemen: het upgraden van MVVMCross -versies kan soms problemen introduceren met afhankelijkheidsinjectie, vooral bij het gebruik van basisweergave -modellen. Veranderingen in constructorselectielogica tussen versies kunnen bijvoorbeeld beïnvloeden hoe afhankelijkheden worden geïnjecteerd [2].
Om deze uitdagingen te overwinnen, kiezen ontwikkelaars er vaak voor om de functionaliteit van MVVMCross te verbeteren zonder de kern -IOC -container te vervangen. Dit maakt het gebruik van extra afhankelijkheidsinjectiekaders zoals mevrouw Di naast MVVMCross mogelijk, waardoor flexibiliteit wordt geboden bij het kiezen van de IOC -provider [1] [5]. Dit vereist echter zorgvuldige opstelling en beheer om conflicten te voorkomen en naadloze integratie te garanderen.
Samenvattend, tijdens het gebruik van Microsoft.extensions.dependencyInjectie met MVVMCross is mogelijk, het vereist zorgvuldig overweging van het opstartproces, potentiële incompatibiliteit en zorgvuldig beheer van afhankelijkheden om bekende problemen te voorkomen.
Citaten:[1] https://github.com/mvvmcross/mvvmcross/issues/4436
[2] https://github.com/mvvmcross/mvvmcross/issues/4183
[3] https://docs.particulaire.net/nservicebus/dependency-injectie/extensions-dependencyinjectie
[4] https://stackoverflow.com/questions/23700121/possible-bug-with-dependency-injection-on-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-injectie