`MVXConvertingTargetBinding` en MVVMCross está diseñado para evitar excepciones de referencia nulas mediante la implementación de varias características clave que aseguran un manejo robusto de valores y conversiones nulos. Así es como ayuda a prevenir tales excepciones:
1. Estructura de clase base: `MVXConvertingTargetBinding` hereda de` mvxtargetbinding`, que proporciona una base para manejar enlaces. Esta clase base incluye mecanismos para administrar el objeto objetivo y el manejo de eventos, que inherentemente implican controles para referencias nulas.
2. Deakreference to Target: la clase `mvxtargetbinding`, de la cual se deriva` mvxConvertingTargetBinding`, usa una `débilleferencia 'para contener el objeto de destino. Este enfoque ayuda a prevenir las fugas de memoria y garantiza que el objeto objetivo pueda ser recolectado de basura si es necesario. Aunque no evita directamente las excepciones de referencia nulas, ayuda a administrar la vida útil de los objetos, reduciendo la probabilidad de nulos inesperados.
3. Estos métodos permiten a los desarrolladores implementar una lógica que puede omitir el establecimiento de un valor si se cumplen ciertas condiciones, lo que puede evitar escenarios en los que los valores nulos puedan causar problemas.
4. Soporte del convertidor: la función principal de `MVXConververtingTargetBinding` es admitir convertidores, que se utilizan para transformar los valores entre la fuente y el objetivo. Si bien los convertidores mismos no evitan inherentemente excepciones de referencia nulas, pueden diseñarse para manejar los valores nulos con gracia. Por ejemplo, un convertidor podría devolver un valor predeterminado o una cadena vacía si la entrada es nula.
5. Manejo de eventos: en enlaces bidireccionales, `MVXConververtingTargetBinding` maneja los eventos para actualizar la fuente cuando cambia el objetivo. Asegura que los manejadores de eventos estén correctamente unidos y separados, lo que ayuda a prevenir las excepciones de referencia nulas evitando los intentos de invocar métodos en objetos nulos.
6. Prácticas de programación defensiva: aunque no es explícitamente parte de la clase 'MVXConvertingTargetBinding` en sí, se alienta a los desarrolladores que usan esta clase a seguir las prácticas de programación defensiva. Esto incluye verificar las referencias nulas antes de intentar usarlas, lo cual es crucial para prevenir las excepciones de referencia nulas.
En resumen, si bien `MVXConvertingTargetBinding` no evita directamente las excepciones de referencia nulas a través de controles nulos explícitos, proporciona un marco que fomenta el manejo robusto de enlaces y conversiones, reduciendo la probabilidad de tales excepciones. Los desarrolladores aún deben implementar cheques nulos y prácticas de programación defensiva al usar esta clase para garantizar que su código sea robusto contra las excepciones de referencia nulas.
Citas:[1] https://www.mvvmcross.com/documentation/advanced/custom-data-neping
[2] http://mcx.space/wiki/index.cgi?doc%2Freadme
[3] https://rubberduckvba.blog/2020/10/25/making-mvvm-work-in-vba-tart-3-bindings/
[4] https://blog.postsharp.net/nullreferenceexception-object-reference-not-set
[5] https://www.christianfindlay.com/blog/stop-nullreferenceExcepciones
[6] https://github.com/whitphx/vscode-emacs-mcx
[7] https://stackoverflow.com/questions/63497549/binding-onewaytoSource-with-onetime-initalization-of-Target
[8] https://learn.microsoft.com/en-us/dotnet/api/system.nullreferenceexception?view=net-9.0