MVVMCROSS hyödyntää heijastusta laajasti objektinrakennuksen aikana, etenkin ohjauksen (IOC) säiliön kääntämisen kautta, jota hallinnoi `mvx.iocprovider` Singleton -ilmentymä. Tässä on yksityiskohtainen yleiskatsaus siitä, kuinka MVVMCross käsittelee heijastusta esineen rakentamisen aikana:
rakentajan injektio
MVVMCross tukee rakentajan injektiota, joka antaa sen ratkaista parametrit automaattisesti objektin rakentamisen aikana heijastuksen avulla. Objektin luotaessa MVVMCross suorittaa seuraavat vaiheet:
1. Heijastus rakentajan löytämiseksi: MVVMCross käyttää heijastusta tunnistaakseen luokan rakentajan.
2. Parametriresoluutio: Se tutkii rakentajan vaatimat parametrit ja tunnistaa tarvittavat rajapinnat tai tyypit.
3. Resolve Rekisteröityjen toteutusten ratkaiseminen: Jokaiselle parametrille MVVMCross käyttää `mvx.iocprovider.resolve ()` saadaksesi rekisteröidyn toteutuksen rajapinnalle tai tyypille.
4. Kutsu rakentaja: Kun kaikki parametrit on ratkaistu, MVVMCross käyttää heijastusta vedotakseen rakentajaan ratkaistujen parametrien kanssa.
Tämä prosessi on rekursiivinen, mikä tarkoittaa, että jos jokin ratkaistuista esineistä vaatii myös muita esineitä, MVVMCross ratkaisee myös ne [1] [4].
irtotavarakäyttökonferenssilla
MVVMCROSS tukee myös luokkien irtotavarana rekisteröintiä pohdintaa käyttämällä. Tämä tehdään tyypillisesti "App" -luokassa, joka perii `mvxApplication`. Kehys käyttää pohdintaa löytääkseen kaikki luokat ydinkokoonpanosta, joka päättyy "palveluun" ja rekisteröi ne laiskoiksi singletoneiksi. Tämä saavutetaan seuraavilla vaiheilla:
1. Löydä luokat, jotka päättyvät "palvelulla": Heijastusta käytetään kaikkien luokkien löytämiseen, joiden nimet päättyvät "palveluun" ydinkokoonpanossa.
2. Tunnista rajapinnat: Jokaiselle löydetylle luokalle MVVMCross tunnistaa sen toteuttamat rajapinnat.
3. Rekisteröidy laiskoiksi singletoniksi: Nämä luokat rekisteröidään sitten laiskoiksi singletoneiksi vastaavia rajapintojaan. Tämä tarkoittaa, että niitä ei toteuteta, ennen kuin heitä pyydetään ensin [2] [4] [7].
ViewModels ja riippuvuusinjektio
MVVMCross käyttää samaa rakentajan injektiomekanismia näkymämalleille. Kun luot ViewModel, MVVMCross ratkaisee kaikki rakenteessa määritetyt riippuvuudet IOC -säilöllä. Tämä mahdollistaa palvelujen helpon räätälöinnin eri alustoilla ja helpottaa yksikkötestausta mahdollistamalla pilkkakäyttöön tarkoitettujen toteutusten käytön [1] [4].
Mukauttaminen ja Appstart
"App" -luokka on vastuussa räätälöityjen objektien rekisteröinnistä IOC -säilöön ja sovelluksen näkymämallien käynnistämisestä. Voit tarvittaessa mukauttaa käynnistysprosessia käyttämällä mukautettua "Appstart` -luokkaa päättääksesi, mikä ViewModel esitellä ensin [2] [7].
Yhteenvetona voidaan todeta, että MVVMCROSS hyödyntää pohdintatoimenpiteitä riippuvuuksien ratkaisemisprosessin automatisoimiseksi objektin rakentamisen aikana, mikä helpottaa monimutkaisten objektikaavioiden hallintaa ja alustojen välistä kehitystä minimaalisella alustakohtaisella koodilla.
Viittaukset:.
[2] https://yanxiaodi.gitbook.io/xamarin-mvvmcross-spbook/Using-mvvmcross-to-create-your-first-xamarin-app/creating-the-core-project/adding-an-app-class
[3] http://wojosoftware.com/software/mvvmcross/
[4] https://www.mvvmcross.com/documentation/fundamentals/inversion-of-control-ioc
.
[6] https://github.com/media-tools/SQLite-Net-Extensions
.
[8] https://www.mvvmcross.com/documentation/fundamentals/viewModel-lifecycle
[9.
[10] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-an-setup