Uporaba Microsoft.Extensions.DependencyInctinection z MVVMcross lahko predstavlja več izzivov in znanih vprašanj:
1. Nezdružljivost s postopkom zagona MVVMcross: MVVMcross zahteva možnost, da se komponente razrešijo s postopkom nastavitve in nato nadaljujete z registracijo več komponent. Vendar pa Microsoft.Extensions.DependencyInctinection (MS.DI) zahteva, da se vse komponente registrirajo, preden pokličete `.build ()` na zbirki storitev. Ta temeljna razlika naredi dva sistema nezdružljiva brez dodatnih rešitev, na primer ročno prevajanje storitev iz enega zabojnika v drugo [1].
2. Dvostopenjski zagonski postopek: Da bi z MVVMcross uporabili MS.DI, razvijalci pogosto gradijo zbirko storitev MS.DI in nato prevedejo svoje storitve v primerek MVVMcross `Imvxiocprovider`. Ta pristop uvaja dvostopenjski zagonski postopek, ki je lahko okoren in lahko privede do dodatne zapletenosti in potencialnih vprašanj [1].
3. Omejitve vbrizgavanja odvisnosti: MVVMcrossov zabojnik MOK obravnava singletonski vidik na ravni vmesnika in ne na instanciran. To pomeni, da če razred izvaja več vmesnikov, lahko MVVMcross ustvari ločene primere za vsak vmesnik, razen če ga izrecno upravlja [4]. Čeprav to ni neposredno povezano z MS.DI, poudarja potrebo po skrbnem upravljanju pri vključevanju različnih sistemov za vbrizgavanje odvisnosti.
4. Vprašanja nadgradnje in združljivosti: Nadgradnja različic MVVMcross lahko včasih uvaja težave z vbrizgavanjem odvisnosti, zlasti pri uporabi modelov baznega pogleda. Na primer, spremembe v logiki izbire konstruktorja med različicami lahko vplivajo na to, kako se vbrizgajo odvisnosti [2].
Da bi premagali te izzive, se razvijalci pogosto odločijo za izboljšanje funkcionalnosti MVVMcrossa, ne da bi nadomestili njegovo osrednjo vsebnik MOK. To omogoča uporabo dodatnih okvirov vbrizgavanja odvisnosti, kot je MS.DI, poleg MVVMcross, kar zagotavlja prožnost pri izbiri ponudnika MOK [1] [5]. Vendar to zahteva skrbno nastavitev in upravljanje, da se izognete konfliktom in zagotovimo brezhibno integracijo.
Če povzamemo, medtem ko je uporaba Microsoft.Extensions.Dependencyinicreation z MVVMcross mogoča, je potrebno natančno upoštevati postopek zagona, potencialne nezdružljivosti in skrbno obvladovanje odvisnosti, da se izognemo znanim vprašanjem.
Navedbe:[1] https://github.com/mvvmcross/mvvmcross/isissue/4436
[2] https://github.com/mvvmcross/mvvmcross/isissue/4183
[3] https://docs.particular.net/nservicebus/Dependency-iniction/Extensions-dependencyInction
[4] https://stackoverflow.com/Questions/23700121/possible-bug-with-dipendency-iniction-on-mvvmcross
[5] https://github.com/mvvmcross/mvvmcross/isissue/3804
[6] https://www.mvvmcross.com/documentation/fundamentals/data---inding
[7] https://msicc.net/using-microsofts-extensions-dependencyining-package-in -xamarin-Forms-mvvm-applications-2/
[8] https://www.mvvmcross.com/documentation/fundamentals/Dependency-Inection