Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon ฉันจะแก้ไขข้อยกเว้นอ้างอิง null null ได้อย่างไรเมื่อมีการเชื่อมโยงมุมมองใน mvvmcross


ฉันจะแก้ไขข้อยกเว้นอ้างอิง null null ได้อย่างไรเมื่อมีการเชื่อมโยงมุมมองใน mvvmcross


การดีบักข้อยกเว้นการอ้างอิง NULL เมื่อมุมมองที่มีผลผูกพันใน MVVMCROSS เกี่ยวข้องกับหลายขั้นตอนในการระบุและแก้ไขปัญหา นี่คือคำแนะนำโดยละเอียดเกี่ยวกับวิธีการแก้ไขปัญหานี้:

1. ระบุแหล่งที่มาของข้อยกเว้น **

- ตรวจสอบการติดตามสแต็ก: การติดตามสแต็กจะระบุว่ามีข้อยกเว้นการอ้างอิงโมฆะเกิดขึ้นที่ใด สิ่งนี้อาจอยู่ในมุมมองของคุณรูปแบบการดูหรือภายใน MVVMCROSS เอง
- ปัญหาทั่วไป: แหล่งที่มาทั่วไปรวมถึงบริการที่ไม่ได้ลงทะเบียนโมเดลมุมมองโมฆะหรือการผูกมัดที่กำหนดค่าไม่ถูกต้อง

2. ตรวจสอบ ViewModel และการตั้งค่าการเชื่อมโยง **

- การเริ่มต้น ViewModel: ตรวจสอบให้แน่ใจว่ารูปแบบมุมมองของคุณเริ่มต้นอย่างเหมาะสมและตั้งค่าบนมุมมอง ใน MVVMcross สิ่งนี้มักจะเกิดขึ้นโดยอัตโนมัติ แต่คุณสามารถตรวจสอบได้โดยตรวจสอบคุณสมบัติ `viewModel` ของมุมมองของคุณ
- การกำหนดค่าการเชื่อมโยง: ตรวจสอบให้แน่ใจว่ามีการกำหนดค่าการผูกไว้อย่างถูกต้อง ใช้ `createBindingSet` เพื่อกำหนดการผูกและตรวจสอบให้แน่ใจว่าประเภทที่ตรงกัน (เช่น` mainview` และ `mainviewmodel ')

3. ตรวจสอบการอ้างอิงโมฆะในการเชื่อมโยง **

- เส้นทางคุณสมบัติ: ตรวจสอบให้แน่ใจว่าเส้นทางคุณสมบัติในการผูกของคุณถูกต้องและคุณสมบัติมีอยู่ในรูปแบบมุมมอง ตัวอย่างเช่นหากคุณมีผลผูกพันกับ `vm => vm.myproperty` ให้ตรวจสอบว่า` myProperty` ไม่เป็นโมฆะและกำหนดไว้อย่างถูกต้อง
- การเริ่มต้นล่าช้า: หากคุณสมบัติเริ่มต้นในภายหลัง (เช่นใน `viewDidload`) ให้แน่ใจว่ามีการใช้การผูกหลังจากการเริ่มต้น

4. ใช้การเชื่อมโยงล่าช้าสำหรับเนื้อหาแบบไดนามิก **

- หากคุณกำลังสร้างเนื้อหาหรือการควบคุมแบบไดนามิกให้พิจารณาใช้ `delaybind` เพื่อให้แน่ใจว่าการเชื่อมโยงจะถูกนำไปใช้หลังจากสร้างมุมมองอย่างสมบูรณ์ สิ่งนี้มีประโยชน์อย่างยิ่งเมื่อทำงานกับการควบคุมแบบกำหนดเองหรือรายการแบบไดนามิก

5. ตรวจสอบให้แน่ใจว่าการลงทะเบียน IOC ที่เหมาะสม **

- การลงทะเบียนบริการ: หากใช้บริการในรูปแบบมุมมองของคุณตรวจสอบให้แน่ใจว่าได้ลงทะเบียนในคอนเทนเนอร์ IOC MVVMCROSS ใช้ `imvxiocprovider` เพื่อจุดประสงค์นี้
- InitializElastChance: หากทำการลงทะเบียน IOC เฉพาะแพลตฟอร์มให้แน่ใจว่าคุณโทรหา `base.initializelastchance ()` เพื่อหลีกเลี่ยงปัญหาเช่นที่อธิบายไว้ใน [4]

6. ปัญหาการผูกมัดแบบกำหนดเอง **

- หากคุณใช้การเชื่อมโยงที่กำหนดเองให้ตรวจสอบว่าคลาสการเชื่อมโยงเป้าหมายของคุณมีการใช้งานและลงทะเบียนอย่างถูกต้องใน `setup.cs` โดยการเอาชนะ` fillTargetFactories 'ดังที่แสดงใน [5]

7. เทคนิคการดีบัก **

- จุดพัก: ใช้จุดพักเพื่อตรวจสอบสถานะของรูปแบบมุมมองของคุณและการผูกที่รันไทม์
- การบันทึก: เปิดใช้งานการบันทึก MVVMCROSS เพื่อรับข้อมูลรายละเอียดเกี่ยวกับการดำเนินการที่มีผลผูกพันและข้อผิดพลาดที่อาจเกิดขึ้น

8. ปัญหา mvxasyncMommand **

- หากใช้ `mvxasynccommand` ตรวจสอบให้แน่ใจว่า` mvx.iocprovider` จะเริ่มต้นก่อนที่จะสร้างคำสั่งดังที่อธิบายไว้ใน [1] นี่เป็นสิ่งสำคัญสำหรับสถานการณ์การทดสอบหน่วย

โดยทำตามขั้นตอนเหล่านี้คุณควรจะสามารถระบุและแก้ไขข้อยกเว้นการอ้างอิงที่เป็นโมฆะส่วนใหญ่ที่เกี่ยวข้องกับการเชื่อมโยงการเชื่อมโยงใน MVVMcross

การอ้างอิง:
[1] https://stackoverflow.com/questions/53597908/mvvm-cross-null-references-hen-unit-testing-mxvasyncMommand/53618570
[2] https://stackoverflow.com/questions/56531225/problem-with-binding-to-mvxview-with-xamarin-ios-and-mvmcross
[3] https://github.com/mvvmcross/mvvmcross/issues/1378
[4] https://stackoverflow.com/questions/18954938/nullreference-exception-during-binding-with-mvvmcross
[5] https://www.mvvmcross.com/documentation/advanced/custom-data-binding
[6] https://stackoverflow.com/questions/40419789/mvvmcross-platform-exceptions-mvxexception-bindingcontext-is-null-during-mvxadap/40420356
[7] https://www.mvvmcross.com/documentation/advanced/mvxnotifytask
[8] https://www.mvvmcross.com/documentation/fundamentals/data-binding