Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon MVXConvertingTargetBinding ป้องกันข้อยกเว้นการอ้างอิง null ได้อย่างไร


MVXConvertingTargetBinding ป้องกันข้อยกเว้นการอ้างอิง null ได้อย่างไร


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

1. โครงสร้างคลาสพื้นฐาน: `mvxConvertingTargetBinding` สืบทอดมาจาก` mvxtArgetBinding 'ซึ่งเป็นรากฐานสำหรับการจัดการการผูก คลาสพื้นฐานนี้มีกลไกในการจัดการวัตถุเป้าหมายและการจัดการเหตุการณ์ซึ่งเกี่ยวข้องกับการตรวจสอบการอ้างอิงโมฆะโดยเนื้อแท้

2. การอ้างอิงที่อ่อนแอไปยังเป้าหมาย: คลาส `mvxtargetBinding` ซึ่ง` mvxConvertingTargetBinding` ได้ใช้ `beakreference 'เพื่อเก็บวัตถุเป้าหมาย วิธีการนี้ช่วยป้องกันการรั่วไหลของหน่วยความจำและทำให้มั่นใจได้ว่าวัตถุเป้าหมายสามารถเก็บขยะได้หากจำเป็น แม้ว่าจะไม่ได้ป้องกันข้อยกเว้นการอ้างอิงที่เป็นโมฆะโดยตรง แต่ก็ช่วยจัดการอายุการใช้งานของวัตถุ แต่ลดโอกาสในการเป็นโมฆะที่ไม่คาดคิด

3. วิธีการเสมือนจริงสำหรับการข้าม setValue: `mvxConvertingTargetBinding` ให้วิธีการเสมือนจริงเช่น` ควร `` ควรจะเป็น skipsetValueForViewSpecificReasons () `และ` `` ควรคิป วิธีการเหล่านี้ช่วยให้นักพัฒนาสามารถใช้ตรรกะที่สามารถข้ามการตั้งค่าค่าได้หากเป็นไปตามเงื่อนไขบางประการซึ่งอาจหลีกเลี่ยงสถานการณ์ที่ค่า NULL อาจทำให้เกิดปัญหา

4. การสนับสนุนตัวแปลง: ฟังก์ชั่นหลักของ `mvxConvertingTargetBinding` คือการรองรับตัวแปลงซึ่งใช้ในการแปลงค่าระหว่างแหล่งที่มาและเป้าหมาย ในขณะที่ตัวแปลงตัวเองไม่ได้ป้องกันข้อยกเว้นการอ้างอิงที่เป็นโมฆะโดยเนื้อแท้พวกเขาสามารถออกแบบมาเพื่อจัดการค่า NULL อย่างสง่างาม ตัวอย่างเช่นตัวแปลงอาจส่งคืนค่าเริ่มต้นหรือสตริงว่างถ้าอินพุตเป็นโมฆะ

5. การจัดการเหตุการณ์: ในการผูกสองทาง `mvxConvertingTargetBinding` จัดการเหตุการณ์เพื่ออัปเดตแหล่งที่มาเมื่อเป้าหมายเปลี่ยนแปลง ช่วยให้มั่นใจได้ว่าตัวจัดการเหตุการณ์ได้รับการติดตั้งและแยกออกอย่างเหมาะสมซึ่งช่วยป้องกันข้อยกเว้นการอ้างอิงที่เป็นโมฆะโดยหลีกเลี่ยงความพยายามในการเรียกใช้วิธีการบนวัตถุว่าง

6. แนวทางการเขียนโปรแกรมป้องกัน: แม้ว่าจะไม่ได้เป็นส่วนหนึ่งของคลาส `mvxconvertingtargetbinding` ตัวเองนักพัฒนาที่ใช้คลาสนี้ได้รับการสนับสนุนให้ปฏิบัติตามแนวทางการเขียนโปรแกรมป้องกัน ซึ่งรวมถึงการตรวจสอบการอ้างอิงที่เป็นโมฆะก่อนที่จะพยายามใช้งานซึ่งเป็นสิ่งสำคัญในการป้องกันข้อยกเว้นอ้างอิงโมฆะ

โดยสรุปในขณะที่ `mvxconvertingtargetBinding` ไม่ได้ป้องกันข้อยกเว้นอ้างอิงที่เป็นโมฆะโดยตรงผ่านการตรวจสอบโมฆะอย่างชัดเจน แต่มันให้กรอบที่ส่งเสริมการจัดการการผูกและการแปลงที่แข็งแกร่งลดโอกาสของข้อยกเว้นดังกล่าว นักพัฒนาควรยังคงใช้การตรวจสอบ NULL และแนวทางปฏิบัติด้านการเขียนโปรแกรมป้องกันเมื่อใช้คลาสนี้เพื่อให้แน่ใจว่ารหัสของพวกเขามีความแข็งแกร่งต่อข้อยกเว้นการอ้างอิง NULL

การอ้างอิง:
[1] https://www.mvvmcross.com/documentation/advanced/custom-data-binding
[2] http://mcx.space/wiki/index.cgi?doc%2Freadme
[3] https://rubberduckvba.blog/2020/10/25/making-mvvm-work-in-vba-part-3-bindings/
[4] https://blog.postsharp.net/nullreferenceexception-object-reference-not-set
[5] https://www.christianfindlay.com/blog/stop-nullreferenceExceptions
[6] https://github.com/whitphx/vscode-emacs-mcx
[7] https://stackoverflow.com/questions/63497549/binding-onewaytosource-with-onetime-initalization-of-target
[8] https://learn.microsoft.com/en-us/dotnet/api/system.nullreferenceexception?view=net-9.0