Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kā MVVMCROSS apstrādā refleksiju objekta konstrukcijas laikā


Kā MVVMCROSS apstrādā refleksiju objekta konstrukcijas laikā


MVVMCROSS plaši izmanto refleksiju objekta veidošanas laikā, jo īpaši ar tā kontroles (SOK) konteinera apgriezšanu, kuru pārvalda `mvx.iocprovider` singleton instance. Šeit ir detalizēts pārskats par to, kā MVVMCROSS apstrādā refleksiju objekta būvniecības laikā:

konstruktora injekcija

MVVMCROSS atbalsta konstruktora iesmidzināšanu, kas tai ļauj automātiski atrisināt parametrus objekta veidošanas laikā, izmantojot refleksiju. Veidojot objektu, MVVMCross veic šādas darbības:

1. Pārdomas, lai atrastu konstruktoru: MVVMCROSS izmanto refleksiju, lai identificētu aktuālās klases konstruktoru.
2. Parametru izšķirtspēja: tas pārbauda konstruktora nepieciešamos parametrus un identificē nepieciešamās saskarnes vai veidus.
3. Atrisiniet reģistrētās ieviešanas: katram parametram MVVMCROSS izmanto `mvx.iocprovider.resolve ()`, lai iegūtu interfeisa vai tipa reģistrētu ieviešanu.
4. Atsauce konstruktors: Kad visi parametri ir atrisināti, MVVMCross izmanto refleksiju, lai izsauktu konstruktoru ar izšķirtajiem parametriem.

Šis process ir rekursīvs, kas nozīmē, ja kādam no atrisinātajiem objektiem ir nepieciešami arī citi objekti, MVVMCROSS atrisinās arī tos [1] [4].

Lielapjoma reģistrācija pēc konvencijas

MVVMCROSS atbalsta arī klašu reģistrāciju lielapjoma reģistrēšanai, izmantojot refleksiju. Parasti tas tiek veikts klasē “App`, kas manto no` mvxApplication`. Raksts izmanto refleksiju, lai atrastu visas klases galvenajā montāžā, kas beidzas ar "servisu", un reģistrē tās kā slinkos singletonus. Tas tiek panākts ar šādām darbībām:

1. Atrodiet klases, kas beidzas ar "servisu": refleksija tiek izmantota, lai atrastu visas klases ar nosaukumiem, kas beidzas ar "servisu" galvenajā montāžā.
2. Identificējiet saskarnes: katrai atrastajai klasei MVVMCROSS identificē tās ieviestās saskarnes.
3. Reģistrējieties kā slinkie singletoni: šīs klases tiek reģistrētas kā slinki singletoni pret to attiecīgajām saskarnēm. Tas nozīmē, ka tie netiek uzreiz, kamēr tos pirmo reizi nav pieprasīts [2] [4] [7].

ViewModels un atkarības injekcija

MVVMCROSS ViewModels izmanto to pašu konstruktora injekcijas mehānismu. Veidojot ViewModel, MVVMCROSS atrisina visas atkarības, kas norādītas konstruktorā, izmantojot SOK konteineru. Tas ļauj ērti pielāgot pakalpojumus dažādās platformās un atvieglo vienības testēšanu, ļaujot izmantot izspēles ieviešanu [1] [4].

Pielāgošana un AppStart

Klase “App` ir atbildīga par pielāgotu objektu reģistrēšanu SOC konteinerā un lietojumprogrammas skatuModeļu sākšanu. Ja nepieciešams, jūs varat pielāgot starta procesu, izmantojot pielāgotu “AppStart” klasi, lai izlemtu, kuru skatuModeli iesniegt vispirms [2] [7].

Rezumējot, MVVMCROSS izmanto refleksiju, lai automatizētu atkarību izšķiršanas procesu objekta būvniecības laikā, padarot vieglāku sarežģītu objektu grafiku pārvaldību un atbalstu starpplatformu izstrādei ar minimālu platformu specifisko kodu.

Atsauces:
[1] https://www.mvvmcross.com/documentation/fundamentals/dependence-injection
.
[3] http://wojosoftware.com/software/mvvmcross/
[4] https://www.mvvmcross.com/documentation/fundamentals/inversion-of-control-ioc
[5] https://www.codeproject.com/articles/863695/introduction-to-mvmcross-platform
[6] https://github.com/media-tools/sqlite-net-extensions
[7] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[8] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[9] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvm-apps-with-xamarin-and-mvmcross
[10] https://www.mvvmcross.com/documentation/advanced/customing-using-app-and-setup