Att använda Microsoft.Extensions.
1. Inkompatibilitet med MVVMCross -startprocess: MVVMCross kräver förmågan att lösa komponenter på del genom installationsprocessen och sedan fortsätta att registrera fler komponenter. Microsoft.Extensions.DependencyInjection (MS.DI) kräver emellertid att alla komponenter registreras innan du ringer `.Build ()` I Service Collection. Denna grundläggande skillnad gör de två systemen oförenliga utan ytterligare lösningar, såsom manuellt översätta tjänster från en behållare till en annan [1].
2. Tvåstegs startprocess: För att utnyttja Ms.DI med MVVMCross bygger utvecklare ofta en Ms.DI-servicekollektion och översätter sedan sina tjänster till MVVMCROSS `IMVXICPROVIDER`-instansen. Detta tillvägagångssätt introducerar en tvåstegs startprocess, som kan vara besvärlig och kan leda till ytterligare komplexitet och potentiella problem [1].
3. Begränsning av beroendeinjektion: MVVMCross's IOC -container behandlar singletonaspekten på gränssnittsnivå, inte den instanserade typen. Detta innebär att om en klass implementerar flera gränssnitt kan MVVMCross skapa separata instanser för varje gränssnitt såvida inte uttryckligen hanteras [4]. Även om detta inte är direkt relaterat till Ms.DI, belyser det behovet av noggrann hantering när man integrerar olika beroendeinjektionssystem.
4. Problem med uppgradering och kompatibilitet: Uppgradering av MVVMCross -versioner kan ibland införa problem med beroendeinjektion, särskilt när du använder basvymodeller. Till exempel kan förändringar i konstruktörsvallogik mellan versioner påverka hur beroenden injiceras [2].
För att övervinna dessa utmaningar väljer utvecklare ofta att förbättra MVVMCross funktionalitet utan att ersätta dess kärn -IOC -behållare. Detta möjliggör användning av ytterligare ramar för injektion av beroende som Ms.DI tillsammans med MVVMCross, vilket ger flexibilitet vid val av IOC -leverantören [1] [5]. Detta kräver emellertid noggrann installation och hantering för att undvika konflikter och säkerställa sömlös integration.
Sammanfattningsvis, medan man använder Microsoft.Extensions.Dependencinjection med MVVMCross är möjligt, kräver det noggrant övervägande av startprocessen, potentiella inkompatibiliteter och noggrann hantering av beroenden för att undvika kända frågor.
Citeringar:[1] https://github.com/mvvmcross/mvvmcross/issues/4436
[2] https://github.com/mvvmcross/mvvmcross/issues/4183
]
]
[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