Dalam MVVMCross versi 6.2.2, beberapa perubahan dibuat yang dapat memengaruhi terjadinya pengecualian referensi nol (NRES). Berikut adalah modifikasi utama:
1. Inisialisasi Penyedia IOC: Satu perubahan signifikan berkaitan dengan inisialisasi `mvx.iocprovider`. Sebelum versi ini, jika penyedia IOC tidak diatur dengan benar, itu dapat menyebabkan pengecualian referensi nol saat membangun perintah seperti `mvxasynccommand` dalam model tampilan. Konstruktor untuk `MVXCommandBase` diperbarui untuk memasukkan mekanisme fallback yang menggunakan` MVXWeakCommandHelper` jika penyedia IOC nol atau gagal menyelesaikan instance `IMVXCommandHelper`. Perubahan ini bertujuan untuk mengurangi NRE dengan memastikan bahwa perintah masih dapat berfungsi bahkan jika penyedia IOC tidak sepenuhnya diinisialisasi [1].
2. Penanganan Penanganan Kesalahan: Penanganan referensi nol potensial telah ditingkatkan di berbagai bagian kerangka kerja. Misalnya, cek telah ditambahkan untuk memastikan bahwa sifat dan metode tertentu tidak mencoba untuk dereferensi objek nol. Ini sangat relevan untuk komponen yang bergantung pada layanan eksternal atau dependensi yang mungkin tidak selalu tersedia [1].
3. Penyesuaian Pengujian Unit: Pengguna melaporkan masalah dengan tes unit gagal karena pengecualian referensi nol saat menggunakan `mvxasynccommand`. Rekomendasi dibuat untuk secara eksplisit menginisialisasi penyedia IOC dalam proyek uji unit. Penyesuaian ini membantu memastikan bahwa semua dependensi diselesaikan dengan benar sebelum menjalankan tes, sehingga mengurangi kemungkinan bertemu NRE selama skenario pengujian [1].
4. Perbaikan Bug Umum: Catatan rilis untuk MVVMCross 6.2.2 menunjukkan bahwa sejumlah bug yang terkait dengan pengecualian referensi nol ditangani, meskipun detail spesifik pada setiap perbaikan tidak didokumentasikan secara luas. Perbaikan ini dapat mencakup penyesuaian di berbagai komponen kerangka kerja di mana NRES sebelumnya dilaporkan [10].
Secara keseluruhan, perubahan dalam MVVMCross 6.2.2 ini fokus pada peningkatan stabilitas dan keandalan eksekusi perintah dan resolusi ketergantungan, yang merupakan bidang penting di mana pengecualian referensi nol dapat muncul. Dengan meningkatkan proses inisialisasi dan penanganan kesalahan, pengembang dapat mengharapkan pengurangan pengecualian tersebut dalam aplikasi mereka yang dibangun dengan kerangka kerja ini.
Kutipan:[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/releases
[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/mvmcross/mvvmcross/blob/develop/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/