في الإصدار MVVMCross 6.2.2 ، تم إجراء العديد من التغييرات التي يمكن أن تؤثر على حدوث استثناءات مرجعية فارغة (NRES). فيما يلي التعديلات الرئيسية:
1. تهيئة مزود اللجنة الأولمبية الدولية: أحد التغييرات المهمة تتعلق بتهيئة "mvx.iocprovider". قبل هذا الإصدار ، إذا لم يتم إعداد مزود IOC بشكل صحيح ، فقد يؤدي ذلك إلى استثناءات مرجعية خالية عند إنشاء أوامر مثل mvxasynccommand` في الموديلات. تم تحديث مُنشئ "MVXCommandBase` ليشمل آلية احتياطية تستخدم" MVXWeakCommandHelper "إذا كان مزود اللجنة الأولمبية الدولية فارغة أو فشل في حل مثيل" ImvxCommandHelper`. يهدف هذا التغيير إلى تخفيف NREs من خلال ضمان أنه لا يزال بإمكان الأوامر العمل حتى إذا لم يتم تهيئة مزود اللجنة الأولمبية الدولية بالكامل [1].
2. تحسينات معالجة الأخطاء: تم تحسين معالجة المراجع الفارغة المحتملة في أجزاء مختلفة من الإطار. على سبيل المثال ، تمت إضافة عمليات الشيكات للتأكد من أن بعض الخصائص والأساليب لا تحاول إخلاء الكائنات الفارغة. هذا مهم بشكل خاص للمكونات التي تعتمد على الخدمات الخارجية أو التبعيات التي قد لا تكون متاحة دائمًا [1].
3. تعديلات اختبار الوحدة: أبلغ المستخدمون عن مشكلات مع اختبارات الوحدة التي تفشل بسبب استثناءات مرجعية فارغة عند استخدام "MVXASYNCCOMMAND". تم تقديم التوصية لتهيئة موفر IOC بشكل صريح في مشاريع اختبار الوحدة. يساعد هذا التعديل في ضمان حل جميع التبعيات بشكل صحيح قبل تنفيذ الاختبارات ، مما يقلل من احتمال مواجهة 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]
[10] https://www.mvvmcross.com/mvvmcross-6.2.0-release/