Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Как MVXConvertingTargetBinding предотвращает нулевые ссылки исключения


Как MVXConvertingTargetBinding предотвращает нулевые ссылки исключения


`MVXConvertingTargetBinding` в MVVMcross предназначена для предотвращения нулевых справочных исключений путем реализации нескольких ключевых функций, которые обеспечивают надежную обработку нулевых значений и конверсий. Вот как это помогает предотвратить такие исключения:

1. Структура базового класса: `mvxconvertingTargetBinding` наследники от` mvxtargetBinding`, которая обеспечивает основу для обработки привязки. Этот базовый класс включает в себя механизмы управления целевым объектом и обработки событий, которые по своей сути включают чеки на нулевые ссылки.

2. ShadeReference to Target: класс `mvxtargetBinding`, из которого происходит` mvxConvertingTargetBinding`, использует `sleedReference` для удержания целевого объекта. Этот подход помогает предотвратить утечки памяти и гарантирует, что целевой объект может быть собранным мусором при необходимости. Хотя это не предотвращает непосредственные ссылки на нулевые ссылки, это помогает управлять сроком службы объекта, снижая вероятность неожиданных нулей.

3. Виртуальные методы для пропуска SetValue: `mvxConvertingTargetBinding` предоставляет виртуальные методы, такие как` wordskipsetValueforviewSpecificereSons () `и` wordskipsetValueFortformpecificereSons () `. Эти методы позволяют разработчикам реализовать логику, которая может пропустить настройку значения, если выполнены определенные условия, потенциально избегая сценариев, в которых нулевые значения могут вызвать проблемы.

4. Поддержка преобразователя: основная функция `mvxconvertingTargetBinding` - поддержка преобразователей, которые используются для преобразования значений между источником и мишенью. В то время как сами конвертеры не предотвращают нулевые эталонные исключения, они могут быть разработаны для изящного обработки нулевых значений. Например, преобразователь может вернуть значение по умолчанию или пустую строку, если вход нулевой.

5. Обработка событий: в двусторонних привязках `mvxconvertingTargetBinding` обрабатывает события для обновления источника при изменении цели. Это гарантирует, что обработчики событий должным образом прикреплены и отстранены, что помогает предотвратить нулевые эталонные исключения, избегая попыток вызывать методы на нулевые объекты.

6. Практики защитного программирования: хотя и не являются частью класса «MVXConvertingTargetBinding», разработчикам, использующим этот класс, рекомендуется следовать методам защитного программирования. Это включает в себя проверку нулевых ссылок, прежде чем пытаться их использовать, что имеет решающее значение для предотвращения нулевых ссылок.

Таким образом, в то время как `mvxconvertingTargetBinding` напрямую не предотвращает нулевые ссылки на исключения с помощью явных нулевых проверок, он обеспечивает структуру, которая стимулирует надежную обработку привязков и конверсий, уменьшая вероятность таких исключений. Разработчики все еще должны реализовать нулевые проверки и практики защитного программирования при использовании этого класса, чтобы гарантировать, что их код является надежным в отношении нулевых справочных исключений.

Цитаты:
[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/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-onewaytosource-with-onetime-initalization-of-target
[8] https://learn.microsoft.com/en-us/dotnet/api/system.nullreecrecexexception?view=net-9.0