`MvxConvertingTargetBinding` v MVVMcross je zasnovan tako, da prepreči nične referenčne izjeme z izvajanjem več ključnih funkcij, ki zagotavljajo robustno ravnanje z ničelnimi vrednostmi in pretvorbami. Tukaj je, kako pomaga preprečiti takšne izjeme:
1. Struktura osnovnega razreda: `mvxConvertingTargetBinding` podeduje iz` mvxtargetBinding`, ki zagotavlja temelje za ravnanje z vezi. Ta osnovni razred vključuje mehanizme za upravljanje ciljnega predmeta in ravnanja z dogodki, ki sami po sebi vključuje preverjanje ničelnih referenc.
2. šibka referenca do cilja: `mvxtargetBinding` razred, iz katerega izhaja` mvxConvertingTargetBinding`, za zadrževanje ciljnega predmeta uporablja `šibkoreference`. Ta pristop pomaga preprečiti puščanje pomnilnika in zagotavlja, da se ciljni objekt po potrebi zbira smeti. Čeprav ne preprečuje neposredno ničnih referenčnih izjem, pomaga pri upravljanju življenjske dobe predmeta, kar zmanjšuje verjetnost nepričakovanih nul.
3. Navidezne metode za preskakovanje setValue: `mvxConvertingTargetBinding` zagotavlja virtualne metode, kot je` bigsKipSetValueForViewSpecificSeasons () `in` bi moral, ` Te metode omogočajo razvijalcem, da izvajajo logiko, ki lahko preskoči nastavitev vrednosti, če se izpolnjujejo določeni pogoji, kar se lahko izogne scenarijem, kjer lahko ničelne vrednosti povzročijo težave.
4. Podpora za pretvorbe: Primarna funkcija `mvxConvertingTargetBinding` je podpora pretvornikom, ki se uporabljajo za preoblikovanje vrednosti med virom in ciljem. Medtem ko sami pretvorniki sami po sebi ne preprečujejo ničnih referenčnih izjem, so lahko zasnovani tako, da graciozno ravnajo z ničelnimi vrednostmi. Na primer, pretvornik lahko vrne privzeto vrednost ali prazen niz, če je vhod ničen.
5. Ravnanje z dogodki: V dvosmernih vezavah `mvxConvertingTargetBinding` uresniči dogodke, da posodobi vir, ko se cilj spremeni. Zagotavlja, da so upravljavci dogodkov pravilno pritrjeni in odmaknjeni, kar pomaga preprečiti nulske referenčne izjeme, tako da se izognete poskusom priklicanja metod na ničelnih predmetih.
6. Obrambne prakse programiranja: Čeprav ni izrecno del samega razreda `mvxConvertingTargetBinding`, razvijalce, ki uporabljajo ta razred, spodbujajo, da sledijo praksam obrambnega programiranja. To vključuje preverjanje ničelnih referenc, preden jih poskusite uporabiti, kar je ključnega pomena pri preprečevanju ničnih referenčnih izjem.
Če povzamemo, medtem ko `mvxConvertingTargetBinding` ne preprečuje neposredno nulskih referenčnih izjem z izrecnimi ničelnimi preverjanji, zagotavlja okvir, ki spodbuja robustno ravnanje z vezavi in pretvorbami, kar zmanjšuje verjetnost takšnih izjem. Razvijalci bi morali pri uporabi tega razreda še vedno izvajati ničelne čeke in obrambne prakse programiranja, da bi zagotovili, da je njihova koda močna glede na ničelne referenčne izjeme.
Navedbe:[1] https://www.mvvmcross.com/documentation/advanced/custom-data---inding
[2] http://mcx.space/wiki/index.cgi?doc%2freadme
[3] https://rubberduckvba.blog/2020/10/25/making-mvvm-work-in-vba-part-3-bindings/
[4] https://blog.postharp.net/nullreferenceException-object-reference-Not-set
[5] https://www.christianfindlay.com/blog/stop-nullreferenceExceptions
[6] https://github.com/whitphx/vscode-emacs-mcx
[7] https://stackoverflow.com/questions/63497549/binding-newaytosource-ith-onetime-Initalizacija-of-TARGET
[8] https://learn.microsoft.com/en-us/dotnet/api/system.nullreferenceException?view=net-9.0