Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Er der nogen kendte problemer med at bruge Microsoft.Extensions.DependencyInjection med MVVMCross


Er der nogen kendte problemer med at bruge Microsoft.Extensions.DependencyInjection med MVVMCross


Brug af Microsoft.Extensions.Dependencyinjektion med MVVMCross kan give flere udfordringer og kendte spørgsmål:

1. uforenelighed med MVVMCROSS -opstartprocessen: MVVMCROSS kræver muligheden for at løse komponenter delvis gennem installationsprocessen og derefter fortsætte med at registrere flere komponenter. Imidlertid kræver Microsoft.Extensions.DependencyInjection (Ms.DI), at alle komponenter skal registreres, før de kalder `.build ()` på servicekollektionen. Denne grundlæggende forskel gør de to systemer uforenelige uden yderligere løsninger, såsom manuelt oversættelse af tjenester fra en container til en anden [1].

2. to-trins opstartproces: For at udnytte MS.DI med MVVMCross bygger udviklere ofte en Ms.DI-servicekollektion og oversætter derefter sine tjenester til MVVMCROSS `IMVXIOCPROVIDER`-instansen. Denne tilgang introducerer en to-trins opstartproces, som kan være besværlig og kan føre til yderligere kompleksitet og potentielle problemer [1].

3. Afhængighedsinjektionsbegrænsninger: MVVMCross's IOC -container behandler Singleton -aspektet på grænsefladniveauet, ikke den instantierede type. Dette betyder, at hvis en klasse implementerer flere grænseflader, kan MVVMCross muligvis skabe separate tilfælde for hver grænseflade, medmindre det eksplicit styres [4]. Selvom dette ikke er direkte relateret til MS.DI, fremhæver det behovet for omhyggelig styring, når man integrerer forskellige afhængighedsinjektionssystemer.

4. Upgrade- og kompatibilitetsproblemer: Opgradering af MVVMCROSS -versioner kan undertiden introducere problemer med afhængighedsinjektion, især når du bruger basisvisningsmodeller. F.eks. Kan ændringer i konstruktørudvælgelseslogik mellem versioner påvirke, hvordan afhængigheder injiceres [2].

For at overvinde disse udfordringer vælger udviklere ofte at forbedre MVVMCROSS's funktionalitet uden at udskifte sin Core IOC -container. Dette muliggør brug af yderligere afhængighedsinjektionsrammer som MS.DI sammen med MVVMCROSS, hvilket giver fleksibilitet i valg af IOC -udbyderen [1] [5]. Dette kræver dog omhyggelig opsætning og ledelse for at undgå konflikter og sikre problemfri integration.

Sammenfattende, mens det er muligt at bruge Microsoft.Extensions.DependencyInjection med MVVMCross, kræver det omhyggelig overvejelse af opstartprocessen, potentielle uforeneligheder og omhyggelig styring af afhængigheder for at undgå kendte problemer.

Citater:
[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-dependencyinjektion
[4] https://stackoverflow.com/questions/23700121/possible-bug-with-aftency-injection-on-mvvmcross
[5] https://github.com/mvvmcross/mvvmcross/issues/3804
[6] https://www.mvvmcross.com/documentation/fundamentals/data-binding
)
[8] https://www.mvvmcross.com/documentation/fundamentals/dependency-injection