`MVXConvertingTargetBinding` mvvmcrossissa on suunniteltu estämään nollaviitepoikkeuksia toteuttamalla useita keskeisiä ominaisuuksia, jotka varmistavat nolla -arvojen ja tulosten voimakkaan käsittelyn. Näin se auttaa estämään tällaiset poikkeukset:
1. Perusluokan rakenne: `mvxConvertingTargetBinding` -perinnöt` mvxtargetBinding` -tapahtumasta, joka tarjoaa perustan sidoksille. Tämä perusluokka sisältää mekanismeja kohdeobjektin ja käsittelytapahtumien hallintaan, joihin luontaisesti sisältää tarkistukset nollaviitteiden suhteen.
2. Heikkovahjaus kohteeseen: `mvxtargetBinding` -luokka, josta` mvxconvertingTargetBinding` johtuu, käyttää "heikkoaReference" kohdeobjektin pitämiseen. Tämä lähestymistapa auttaa estämään muistivuodot ja varmistavat, että kohdeobjekti voidaan tarvittaessa kerätä roskia. Vaikka se ei suoraan estä NULL -viitepoikkeuksia, se auttaa hallitsemaan objektin käyttöikää vähentäen odottamattomien nollien todennäköisyyttä.
3. Virtuaaliset menetelmät SETVALUE: `mvxConvertingTargetBinding` tarjoaa virtuaaliset menetelmät, kuten` serySkipsetValueForViewSpesificReasons () `ja` serskipsetValueForplatformSpecificreasons () `. Näiden menetelmien avulla kehittäjät voivat toteuttaa logiikan, joka voi ohittaa arvon asettamisen, jos tietyt ehdot täyttyvät, mikä mahdollisesti välttävät skenaarioita, joissa nolla -arvot voivat aiheuttaa ongelmia.
4. Muuntimen tuki: MVXConvertingTargetBinding` -tapahtuman ensisijainen tehtävä on tukea muuntimia, joita käytetään arvojen muuntamiseen lähteen ja kohteen välillä. Vaikka muuntimet itse eivät luonnostaan estä nollaviitepoikkeuksia, ne voidaan suunnitella käsittelemään nolliarvoja sulavasti. Esimerkiksi muunnin voi palauttaa oletusarvon tai tyhjän merkkijonon, jos tulo on nolla.
5. Tapahtumankäsittely: Kaksisuuntaisissa sidoksissa `mvxConvertingTargetBinding` käsittelee tapahtumia lähteen päivittämiseksi, kun kohde muuttuu. Se varmistaa, että tapahtumien käsittelijät ovat asianmukaisesti kiinnitettyjä ja irrotettuja, mikä auttaa estämään nollaviitepoikkeuksia välttämällä yrityksiä vedota menetelmiin nolla -objekteihin.
6. Puolustavat ohjelmointikäytännöt: vaikkakaan ei nimenomaisesti osa "MVXConvertingTargetBinding" -luokkaa, tätä luokkaa käyttäviä kehittäjiä kannustetaan noudattamaan puolustavia ohjelmointikäytäntöjä. Tähän sisältyy nollaviitteiden tarkistaminen ennen niiden käyttämistä, mikä on ratkaisevan tärkeää estämään nollaviitepoikkeuksia.
Yhteenvetona voidaan todeta, että "mvxconvertingTargetBinding" ei suoraan estä nollaviitepoikkeuksia nimenomaisten nollatarkistuksien avulla, se tarjoaa puitteet, jotka kannustavat sidosten ja tulosten vahvaa käsittelyä, vähentäen tällaisten poikkeusten todennäköisyyttä. Kehittäjien tulisi silti toteuttaa nollatarkistukset ja puolustavat ohjelmointikäytännöt, kun tätä luokkaa käytetään varmistaakseen, että heidän koodinsa on vankka nollaviitepoikkeuksia vastaan.
Viittaukset:[1] https://www.mvvmcross.com/documentation/advanced/custom-data-binding
[2] http://mcx.space/wiki/index.cgi?doc%2Freadme
[3] https://rubberduckvba.blog/2020/10/25/making-mvvm-work-in-vba-part-3-bindings/
.
[5] https://www.christianfindlay.com/blog/stop-nullreferenceExceptions
[6] https://github.com/whitphx/vscode-emacs-mcx
.
.