Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Які зміни були внесені в Mvvmcross 6.2.2, що може вплинути на нульові еталонні винятки


Які зміни були внесені в Mvvmcross 6.2.2, що може вплинути на нульові еталонні винятки


У версії MVVMCross 6.2.2 було внесено кілька змін, які можуть вплинути на виникнення нульових еталонних винятків (NRE). Ось ключові зміни:

1. Ініціалізація постачальників IOC: Одна суттєва зміна стосується ініціалізації `mvx.iocprovider`. До цієї версії, якщо постачальник МОК був налаштований не правильно, це може призвести до нульових референтних винятків при побудові команд, таких як `mvxasynccommand` у моделях перегляду. Конструктор для `mvxCommandBase` був оновлений, щоб включити механізм резервного відбиття, який використовує` MvxWeakCommandHelper`, якщо постачальник МОК є нульовим або не зможе вирішити екземпляр `imvxCommandHelper`. Ця зміна має на меті пом'якшити НР, забезпечуючи, щоб команди все ще могли функціонувати, навіть якщо постачальник МОК не буде повністю ініціалізований [1].

2. Поліпшення помилок: обробка потенційних нульових посилань була вдосконалена в різних частинах рамки. Наприклад, були додані перевірки, щоб забезпечити, щоб певні властивості та методи не намагалися деференції нульових об'єктів. Це особливо актуально для компонентів, які покладаються на зовнішні послуги або залежності, які не завжди можуть бути доступні [1].

3. Коригування тестування одиниць: Користувачі повідомили про проблеми з підрозділами, що не вдаються через нульові еталонні винятки при використанні `mvxasynccommand`. Була зроблена рекомендація, щоб чітко ініціалізувати постачальника IOC в одиничних тестових проектах. Це коригування допомагає забезпечити належне вирішення всіх залежностей перед проведенням тестів, тим самим зменшуючи ймовірність зустрічі з НР під час сценаріїв тестування [1].

. Ці виправлення можуть включати коригування в різних компонентах рамок, де раніше повідомлялося про НЕС [10].

В цілому ці зміни в MVVMCross 6.2.2 зосереджуються на підвищенні стабільності та надійності виконання команд та роздільної здатності залежності, які є критичними областями, де можуть виникнути нульові опорні винятки. Підвищуючи процес ініціалізації та поводження з помилками, розробники можуть очікувати зменшення таких винятків у своїх програмах, побудованих за допомогою цієї рамки.

Цитати:
[1] https://stackoverflow.com/questions/53597908/mvvm-cross-null-references-when-unit-testing-mxvasynccommand
[2] https://www.mvvmcross.com/mvvmcross-8.0.0-release/
[3] https://pvs-studio.com/en/blog/posts/csharp/1049/
[4] https://www.youtube.com/watch?v=uzsdzok4un8
[5] https://github.com/mvvmcross/mvvmcross/relase
[6] https://visualstudiomagazine.com/articles/2018/05/08/build-a-xamarin.forms-application.aspx
[7] https://github.com/mvvmcross/mvvmcross/issues/3310
[8] https://github.com/mvvmcross/mvvmcross/blob/devell/changelog.md
[9] https://www.reddit.com/r/dotnetmaui/comments/1bpfvky/cannot_pair_to_mac_null_reference_exception/
[10] https://www.mvvmcross.com/mvvmcross-6.2.0-release/