Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon In che modo mvxConvertingTargetBinding impedisce le eccezioni di riferimento nulle


In che modo mvxConvertingTargetBinding impedisce le eccezioni di riferimento nulle


`MVXConvertingTargetBinding` in mvvmcross è progettato per prevenire le eccezioni di riferimento nulli implementando diverse funzionalità chiave che garantiscono una maneggevolezza di valori e conversioni nulli. Ecco come aiuta a prevenire tali eccezioni:

1. Struttura della classe base: `MVXConvertingTargetBinding` eredita da` mvxtargetbinding`, che fornisce una base per la gestione degli attacchi. Questa classe di base include meccanismi per la gestione dell'oggetto target e la gestione degli eventi, che coinvolgono intrinsecamente controlli per riferimenti nulli.

2. Debolezza al target: la classe `mvxtargetbinding`, da cui deriva` mvxConvertingTargetBinding` deriva, usa un `debolezza` per mantenere l'oggetto target. Questo approccio aiuta a prevenire le perdite di memoria e garantisce che l'oggetto target possa essere raccolto spazzatura se necessario. Sebbene non impedisca direttamente le eccezioni di riferimento nulli, aiuta a gestire la durata degli oggetti, riducendo la probabilità di null inaspettati.

3. Metodi virtuali per saltare il setValue: `mvxConvertingTargetBinding` fornisce metodi virtuali come` seuSkipsetValueForViewSpecificReasons () `e` DouchSKipSEtValueForFlatformSpecificReasons () `. Questi metodi consentono agli sviluppatori di implementare la logica che può saltare l'impostazione di un valore se vengono soddisfatte determinate condizioni, evitando potenzialmente scenari in cui i valori nulli potrebbero causare problemi.

4. Supporto del convertitore: la funzione primaria di `mvxConvertingTargetBinding` è supportare i convertitori, che vengono utilizzati per trasformare i valori tra la sorgente e il bersaglio. Mentre i convertitori stessi non impediscono intrinsecamente le eccezioni di riferimento nulli, possono essere progettati per gestire con grazia i valori nulli. Ad esempio, un convertitore potrebbe restituire un valore predefinito o una stringa vuota se l'ingresso è nullo.

5. Gestione degli eventi: in binding a due vie, `mvxConvertingTargetBinding` gestisce gli eventi per aggiornare la fonte quando il target cambia. Garantisce che i gestori di eventi siano adeguatamente collegati e distaccati, il che aiuta a prevenire le eccezioni di riferimento nulli evitando i tentativi di invocare metodi sugli oggetti nulli.

6. Pratiche di programmazione difensiva: sebbene non esplicitamente parte della classe `MVXConvertingTargetBinding", gli sviluppatori che utilizzano questa classe sono incoraggiati a seguire le pratiche di programmazione difensive. Ciò include il controllo dei riferimenti nulli prima di tentare di usarli, il che è cruciale per prevenire le eccezioni di riferimento nulle.

In sintesi, mentre `MVXConvertingTargetBinding` non impedisce direttamente le eccezioni di riferimento nulli attraverso espliciti controlli nulli, fornisce un framework che incoraggia la gestione solida di vincoli e conversioni, riducendo la probabilità di tali eccezioni. Gli sviluppatori dovrebbero comunque implementare controlli nulli e pratiche di programmazione difensiva quando si utilizzano questa classe per garantire che il loro codice sia robusto rispetto alle eccezioni di riferimento nulle.

Citazioni:
[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/
[4] https://blog.postsharp.net/nullreferencexception-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-onewaytosource-with-onotime-iniitalizzazione-of-target
[8] https://learn.microsoft.com/en-us/dotnet/api/system.nullreferencexception?view=net-9.0