ใน MVVMCROSS เวอร์ชัน 6.2.2 มีการเปลี่ยนแปลงหลายอย่างที่อาจส่งผลกระทบต่อการเกิดข้อยกเว้นการอ้างอิง NULL (NRES) นี่คือการปรับเปลี่ยนที่สำคัญ:
1. การเริ่มต้นผู้ให้บริการ IOC: การเปลี่ยนแปลงที่สำคัญอย่างหนึ่งเกี่ยวข้องกับการเริ่มต้นของ `mvx.iocprovider` ก่อนรุ่นนี้หากผู้ให้บริการ IOC ไม่ได้ตั้งค่าอย่างถูกต้องอาจนำไปสู่ข้อยกเว้นการอ้างอิงที่เป็นโมฆะเมื่อสร้างคำสั่งเช่น `mvxasyncCommand` ในโมเดลมุมมอง ตัวสร้างสำหรับ `mvxCommandBase` ได้รับการอัปเดตเพื่อรวมกลไกทางเลือกที่ใช้` MVXWeakCommandHelper` หากผู้ให้บริการ IOC เป็นโมฆะหรือไม่สามารถแก้ไขอินสแตนซ์ของ `IMVXCommandHelper 'ได้ การเปลี่ยนแปลงนี้มีจุดมุ่งหมายเพื่อลด NRES โดยทำให้มั่นใจได้ว่าคำสั่งยังสามารถทำงานได้แม้ว่าผู้ให้บริการ IOC จะไม่ได้เริ่มต้นอย่างสมบูรณ์ [1]
2. การปรับปรุงการจัดการข้อผิดพลาด: การจัดการการอ้างอิงโมฆะที่อาจเกิดขึ้นได้รับการปรับปรุงในส่วนต่าง ๆ ของกรอบ ตัวอย่างเช่นมีการเพิ่มการตรวจสอบเพื่อให้แน่ใจว่าคุณสมบัติและวิธีการบางอย่างไม่ได้พยายามที่จะ dereference null วัตถุ สิ่งนี้มีความเกี่ยวข้องอย่างยิ่งสำหรับส่วนประกอบที่พึ่งพาบริการภายนอกหรือการพึ่งพาที่อาจไม่สามารถใช้ได้เสมอไป [1]
3. การปรับการทดสอบหน่วย: ผู้ใช้รายงานปัญหาเกี่ยวกับการทดสอบหน่วยที่ล้มเหลวเนื่องจากข้อยกเว้นอ้างอิงที่เป็นโมฆะเมื่อใช้ `mvxasyncCommand` คำแนะนำถูกสร้างขึ้นเพื่อเริ่มต้นผู้ให้บริการ IOC ในโครงการทดสอบหน่วยอย่างชัดเจน การปรับนี้ช่วยให้แน่ใจว่าการพึ่งพาทั้งหมดได้รับการแก้ไขอย่างถูกต้องก่อนทำการทดสอบซึ่งจะช่วยลดโอกาสในการเผชิญหน้ากับ NRE ในระหว่างการทดสอบสถานการณ์ [1]
4. การแก้ไขข้อผิดพลาดทั่วไป: หมายเหตุการเปิดตัวสำหรับ MVVMCROSS 6.2.2 ระบุว่ามีข้อบกพร่องจำนวนหนึ่งที่เกี่ยวข้องกับข้อยกเว้นการอ้างอิง NULL ได้รับการแก้ไขแม้ว่ารายละเอียดเฉพาะเกี่ยวกับการแก้ไขแต่ละครั้งจะไม่ได้รับการบันทึกอย่างกว้างขวาง การแก้ไขเหล่านี้อาจรวมถึงการปรับเปลี่ยนในส่วนประกอบต่าง ๆ ของเฟรมเวิร์กที่รายงาน NREs ก่อนหน้านี้ [10]
โดยรวมแล้วการเปลี่ยนแปลงเหล่านี้ใน MVVMCROSS 6.2.2 มุ่งเน้นไปที่การปรับปรุงความเสถียรและความน่าเชื่อถือของการดำเนินการคำสั่งและการแก้ไขการพึ่งพาซึ่งเป็นพื้นที่สำคัญที่มีข้อยกเว้นการอ้างอิงโมฆะ โดยการเพิ่มกระบวนการเริ่มต้นและการจัดการข้อผิดพลาดนักพัฒนาสามารถคาดหวังการลดลงของข้อยกเว้นดังกล่าวในแอปพลิเคชันที่สร้างขึ้นด้วยกรอบนี้
การอ้างอิง:[1] https://stackoverflow.com/questions/53597908/mvvm-cross-null-references-wen-unit-testing-mxvasyncMommand
[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/