Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Як MVXConvertingTargetBinding запобігає нульованому еталонному винятків


Як MVXConvertingTargetBinding запобігає нульованому еталонному винятків


`MvxConvertingTargetBinding` в MVVMcross призначений для запобігання виняток нульові референтні винятки, реалізуючи кілька ключових функцій, що забезпечують надійну обробку нульових значень та перетворень. Ось як це допомагає запобігти таким виняткам:

1. Структура базового класу: `MvxConvertingTargetBinding` успадковує від` mvxtargetBinding`, що забезпечує основу для обробки прив’язки. Цей базовий клас включає механізми управління цільовим об'єктом та поводження з подіями, які по суті включають перевірки на нульові посилання.

2. Слабка референція до цілі: клас `mvxtargetbinding`, з якого` mvxconvertingtargetbinding` походить, використовує `sempreference` для утримання цільового об'єкта. Цей підхід допомагає запобігти витоку пам'яті та забезпечує, що цільовий об'єкт може бути зібраним, якщо це необхідно. Хоча це безпосередньо не запобігає нульованому референтному винятку, це допомагає керувати терміном експлуатації об'єкта, зменшуючи ймовірність несподіваних нулів.

3. Віртуальні методи пропускання SetValue: `mvxConvertingTargetBinding` забезпечує віртуальні методи, такі як` `` ` Ці методи дозволяють розробникам реалізовувати логіку, яка може пропустити встановлення значення, якщо певні умови будуть виконані, потенційно уникаючи сценаріїв, коли нульові значення можуть спричинити проблеми.

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-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-ontime-initization-of-target
[8] https://learn.microsoft.com/en-us/dotnet/api/system.nullreferenceexception?view=net-9.0