Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Ποιες αλλαγές έγιναν στο MVVMCROSS 6.2.2 που μπορεί να επηρεάσουν τις εξαιρέσεις αναφοράς NULL


Ποιες αλλαγές έγιναν στο MVVMCROSS 6.2.2 που μπορεί να επηρεάσουν τις εξαιρέσεις αναφοράς NULL


Στην έκδοση MVVMCross 6.2.2, έγιναν αρκετές αλλαγές που θα μπορούσαν να επηρεάσουν την εμφάνιση εξαιρέσεων αναφοράς μηδενικών (NREs). Εδώ είναι οι βασικές τροποποιήσεις:

1. Αρχικοποίηση του παροχέα IOC: Μια σημαντική αλλαγή σχετίζεται με την αρχικοποίηση του «MVX.iocprovider». Πριν από αυτή την έκδοση, εάν ο πάροχος της ΔΟΕ δεν είχε ρυθμιστεί σωστά, θα μπορούσε να οδηγήσει σε εξαιρέσεις αναφοράς μηδενικής κατά την κατασκευή εντολών όπως το `mvxasynccommand 'στα μοντέλα προβολής. Ο κατασκευαστής για το `mvxcommandbase` ενημερώθηκε για να συμπεριλάβει έναν μηχανισμό fallback που χρησιμοποιεί` mvxweakCommandHelper` εάν ο πάροχος της ΔΟΕ είναι null ή δεν αποτύχει να επιλύσει μια παρουσία του `imvxcommandhelper`. Αυτή η αλλαγή στοχεύει στην άμβλυνση των NREs, εξασφαλίζοντας ότι οι εντολές μπορούν ακόμα να λειτουργήσουν ακόμη και αν ο πάροχος ΔΟΕ δεν έχει αρχικοποιηθεί πλήρως [1].

2. Βελτιώσεις χειρισμού σφαλμάτων: Ο χειρισμός πιθανών μηδενικών αναφορών έχει βελτιωθεί σε διάφορα μέρη του πλαισίου. Για παράδειγμα, έχουν προστεθεί έλεγχοι για να διασφαλιστεί ότι ορισμένες ιδιότητες και μέθοδοι δεν προσπαθούν να αποθαρρύνουν τα αντικείμενα μηδενικών. Αυτό είναι ιδιαίτερα σημαντικό για τα εξαρτήματα που βασίζονται σε εξωτερικές υπηρεσίες ή εξαρτήσεις που μπορεί να μην είναι πάντα διαθέσιμες [1].

3. Ρυθμίσεις δοκιμών μονάδων: Οι χρήστες ανέφεραν προβλήματα με δοκιμές μονάδας που αποτυγχάνουν λόγω εξαιρέσεων αναφοράς null όταν χρησιμοποιούν το `mvxasynccommand '. Η σύσταση έγινε για να αρχικοποιηθεί ρητά ο πάροχος ΔΟΕ σε έργα δοκιμών μονάδων. Αυτή η προσαρμογή βοηθά να διασφαλιστεί ότι όλες οι εξαρτήσεις επιλύονται σωστά πριν από την εκτέλεση δοκιμών, μειώνοντας έτσι την πιθανότητα αντιμετώπισης NREs κατά τη διάρκεια των σεναρίων δοκιμών [1].

4. Γενικές διορθώσεις σφαλμάτων: Οι σημειώσεις απελευθέρωσης για το MVVMCROSS 6.2.2 υποδεικνύουν ότι αντιμετωπίστηκαν ορισμένα σφάλματα που σχετίζονται με εξαιρέσεις αναφοράς μηδενικών, αν και συγκεκριμένες λεπτομέρειες για κάθε λύση δεν ήταν εκτεταμένα τεκμηριωμένες. Αυτές οι διορθώσεις μπορεί να περιλαμβάνουν προσαρμογές σε διάφορα στοιχεία του πλαισίου όπου είχαν αναφερθεί προηγουμένως οι NREs [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/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/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/