Izmantojot microsoft.extensions.pendencyInject ar MVVMCross, var rasties vairākas problēmas un zināmas problēmas:
1. Nesaderība ar MVVMCROSS startēšanas procesu: MVVMCross prasa spēju daļēji atrisināt komponentus, izmantojot iestatīšanas procesu, un pēc tam turpināt reģistrēt vairāk komponentu. Tomēr Microsoft.extensions.PeendencyInject (Ms.DI) prasa, lai visi komponenti būtu reģistrēti pirms zvana `.build ()` pakalpojumu kolekcijā. Šī būtiskā atšķirība padara abas sistēmas nesaderīgas bez papildu risinājumiem, piemēram, manuāli tulkojot pakalpojumus no viena konteinera uz otru [1].
2. Divpakāpju starta process: Lai piesaistītu MS.DI ar MVVMCROSS, izstrādātāji bieži veido kundzes pakalpojumu kolekciju un pēc tam pārveido savus pakalpojumus MVVMCross `imvxiocprovider` instancē. Šī pieeja ievieš divpakāpju starta procesu, kas var būt apgrūtinošs un var izraisīt papildu sarežģītību un iespējamās problēmas [1].
3. Atkarības injekcijas ierobežojumi: MVVMCROSS SOK konteiners izturas pret singletona aspektu interfeisa līmenī, nevis uz to. Tas nozīmē, ja klase ievieš vairākas saskarnes, MVVMCROSS katram interfeisam var izveidot atsevišķus gadījumus, ja vien tas nav skaidri pārvaldīts [4]. Lai gan tas nav tieši saistīts ar Ms.Di, tas izceļ nepieciešamību pēc rūpīgas pārvaldības, integrējot dažādas atkarības injekcijas sistēmas.
4. Jaunināšanas un saderības problēmas: MVVMCROSS versiju jaunināšana dažreiz var ieviest problēmas ar atkarības injekciju, it īpaši, ja tiek izmantoti bāzes skata modeļi. Piemēram, izmaiņas konstruktoru atlases loģikā starp versijām var ietekmēt to, kā tiek ievadītas atkarības [2].
Lai pārvarētu šos izaicinājumus, izstrādātāji bieži izvēlas uzlabot MVVMCross funkcionalitāti, neaizvietojot tā galveno SOK konteineru. Tas ļauj izmantot papildu atkarības iesmidzināšanas ietvarus, piemēram, MS.DI, līdzās MVVMCross, nodrošinot elastību SOK nodrošinātāja izvēlē [1] [5]. Tomēr tas prasa rūpīgu iestatīšanu un pārvaldību, lai izvairītos no konfliktiem un nodrošinātu nemanāmu integrāciju.
Rezumējot, kamēr ir iespējama Microsoft.extensions.PetenencyInject ar MVVMCross, tas prasa rūpīgi ņemt vērā starta procesu, iespējamās nesaderības un rūpīga atkarību pārvaldība, lai izvairītos no zināmām problēmām.
Atsauces:[1] https://github.com/mvvmcross/mvvmcross/issues/4436
[2] https://github.com/mvvmcross/mvvmcross/issues/4183
[3.]
.
[5] https://github.com/mvvmcross/mvvmcross/issues/3804
[6] https://www.mvvmcross.com/documentation/fundamentals/data
[7] https://msicc.net/using-microsofts-extensions-dependencyInction-package-in-xamarin-formas-mvvm-applications-part-2/
[8] https://www.mvvmcross.com/documentation/fundamentals/dependence-injection