Bruke Microsoft.Extension.Favhengighetsinjeksjon med MVVMCROSS kan presentere flere utfordringer og kjente spørsmål:
1. Inkompatibilitet med MVVMCROSS -oppstartsprosess: MVVMCROSS krever muligheten til å løse komponenter deltok gjennom installasjonsprosessen og deretter fortsette å registrere flere komponenter. Imidlertid krever Microsoft.Extensions.avhengighetsinjeksjon (Ms.DI) at alle komponenter skal registreres før de ringer `.build ()` på servicesamlingen. Denne grunnleggende forskjellen gjør de to systemene uforenlige uten flere løsninger, for eksempel manuelt å oversette tjenester fra en container til en annen [1].
2. To-trinns oppstartsprosess: For å utnytte Ms.DI med MVVMCROSS, bygger utviklere ofte en Ms.DI-tjenestesamling og oversetter deretter sine tjenester til MVVMCROSS `IMVXIOCPROVider`-forekomsten. Denne tilnærmingen introduserer en to-trinns oppstartsprosess, som kan være tungvint og kan føre til ytterligere kompleksitet og potensielle problemer [1].
3. Avhengighetsinjeksjonsbegrensninger: MVVMCROSSs IOC -container behandler Singleton -aspektet på grensesnittnivå, ikke den instantierte typen. Dette betyr at hvis en klasse implementerer flere grensesnitt, kan MVVMCROSS lage separate forekomster for hvert grensesnitt med mindre eksplisitt administreres [4]. Selv om dette ikke er direkte relatert til Ms.DI, fremhever det behovet for nøye styring når du integrerer forskjellige avhengighetsinjeksjonssystemer.
4. Oppgradering og kompatibilitetsproblemer: Oppgradering av MVVMCROSS -versjoner kan noen ganger introdusere problemer med avhengighetsinjeksjon, spesielt når du bruker basisvisningsmodeller. For eksempel kan endringer i konstruktørvalgslogikk mellom versjoner påvirke hvordan avhengigheter blir injisert [2].
For å overvinne disse utfordringene velger utviklere ofte å forbedre MVVMCROSSs funksjonalitet uten å erstatte sin Core IOC -beholder. Dette gir mulighet for bruk av ytterligere avhengighetsinjeksjonsrammer som Ms.DI sammen med MVVMCROSS, og gir fleksibilitet i å velge IOC -leverandøren [1] [5]. Dette krever imidlertid nøye oppsett og ledelse for å unngå konflikter og sikre sømløs integrasjon.
Oppsummert, mens du bruker Microsoft.Extensions.avhengighetsinjeksjon med MVVMCROSS er mulig, krever det nøye vurdering av oppstartsprosessen, potensielle inkompatibiliteter og nøye styring av avhengigheter for å unngå kjente problemer.
Sitasjoner:[1] https://github.com/mvvmcross/mvvmcross/issues/4436
[2] https://github.com/mvvmcross/mvvmcross/issues/4183
[3] https://docs.particular.net/nservicebus/defedency-injection/extensions-dependencyinjection
[4] https://stackoverflow.com/questions/23700121/possible-bug-with-dependency-injection-on-mvmcross
[5] https://github.com/mvvmcross/mvvmcross/issues/3804
[6] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[7] https://msicc.net/USSE-MICROSOFTS-EBESTENSIONS-EPPAVENCYINEVITION-PACKAGE--in-XAMARIN-FORMS MVVM-APPLICATIONS-PART-2/
[8] https://www.mvvmcross.com/documentation/fundamentals/dependency-injection