Trong MVVMcross phiên bản 6.2.2, một số thay đổi đã được thực hiện có thể ảnh hưởng đến sự xuất hiện của các ngoại lệ tham chiếu NULL (NRE). Dưới đây là những sửa đổi chính:
1. Khởi tạo nhà cung cấp IOC: Một thay đổi đáng kể liên quan đến việc khởi tạo `mvx.iocprovider`. Trước phiên bản này, nếu nhà cung cấp IOC không được thiết lập chính xác, nó có thể dẫn đến các ngoại lệ tham chiếu null khi xây dựng các lệnh như `mvxasynccommand` trong các mô hình xem. Chất xây dựng cho `mvxcommandbase` đã được cập nhật để bao gồm một cơ chế dự phòng sử dụng` mvxweakCommandHelper` nếu nhà cung cấp IOC là null hoặc không giải quyết được một thể hiện của `imvxCommandHelper`. Thay đổi này nhằm mục đích giảm thiểu NRE bằng cách đảm bảo rằng các lệnh vẫn có thể hoạt động ngay cả khi nhà cung cấp IOC không được khởi tạo đầy đủ [1].
2. Cải tiến xử lý lỗi: Việc xử lý các tài liệu tham khảo null tiềm năng đã được cải thiện trong các phần khác nhau của khung. Chẳng hạn, các kiểm tra đã được thêm vào để đảm bảo rằng các thuộc tính và phương thức nhất định không cố gắng để phân tích các đối tượng null. Điều này đặc biệt phù hợp với các thành phần dựa vào các dịch vụ bên ngoài hoặc phụ thuộc có thể không phải lúc nào cũng có sẵn [1].
3. Điều chỉnh kiểm tra đơn vị: Người dùng báo cáo các vấn đề với các bài kiểm tra đơn vị không thành công do các ngoại lệ tham chiếu null khi sử dụng `mvxasynccommand`. Khuyến nghị đã được đưa ra để khởi tạo rõ ràng nhà cung cấp IOC trong các dự án thử nghiệm đơn vị. Điều chỉnh này giúp đảm bảo rằng tất cả các phụ thuộc được giải quyết đúng trước khi thực hiện các bài kiểm tra, do đó giảm khả năng gặp NRE trong các kịch bản kiểm tra [1].
4. Khắc phục lỗi chung: Ghi chú phát hành cho MVVMCROSS 6.2.2 chỉ ra rằng một số lỗi liên quan đến các ngoại lệ tham chiếu null đã được giải quyết, mặc dù các chi tiết cụ thể trên mỗi bản sửa lỗi không được ghi lại rộng rãi. Các bản sửa lỗi này có thể bao gồm các điều chỉnh trên các thành phần khác nhau của khung nơi NRE được báo cáo trước đây [10].
Nhìn chung, những thay đổi này trong MVVMCROSS 6.2.2 Tập trung vào việc cải thiện tính ổn định và độ tin cậy của việc thực thi lệnh và giải quyết phụ thuộc, đó là các lĩnh vực quan trọng nơi các ngoại lệ tham chiếu null có thể phát sinh. Bằng cách tăng cường quá trình khởi tạo và xử lý lỗi, các nhà phát triển có thể mong đợi giảm các ngoại lệ như vậy trong các ứng dụng của họ được xây dựng với khung này.
Trích dẫn:[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/MVVMCROSS
.
.