Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon มีปัญหาที่ทราบหรือไม่ว่าการใช้ microsoft.extensions.dependencyinjection กับ mvvmcross


มีปัญหาที่ทราบหรือไม่ว่าการใช้ microsoft.extensions.dependencyinjection กับ mvvmcross


การใช้ microsoft.extensions.dependencyinjection กับ MVVMcross สามารถนำเสนอความท้าทายหลายประการและปัญหาที่ทราบ:

1. ความไม่ลงรอยกันกับกระบวนการเริ่มต้น MVVMCROSS: MVVMCROSS ต้องการความสามารถในการแก้ไขส่วนประกอบส่วนหนึ่งผ่านกระบวนการตั้งค่าจากนั้นลงทะเบียนส่วนประกอบเพิ่มเติมต่อไป อย่างไรก็ตาม microsoft.extensions.dependencyinject (MS.DI) ต้องการส่วนประกอบทั้งหมดที่จะลงทะเบียนก่อนโทร `. build ()` ในการรวบรวมบริการ ความแตกต่างพื้นฐานนี้ทำให้ทั้งสองระบบเข้ากันไม่ได้โดยไม่ต้องแก้ปัญหาเพิ่มเติมเช่นบริการแปลด้วยตนเองจากภาชนะหนึ่งไปยังอีก [1]

2. กระบวนการเริ่มต้นสองขั้นตอน: เพื่อใช้ประโยชน์จาก MS.DI ด้วย MVVMCROSS นักพัฒนามักจะสร้างคอลเลกชันบริการ MS.DI จากนั้นแปลบริการของมันลงในอินสแตนซ์ MVVMCROSS `IMVXiocProvider` วิธีการนี้แนะนำกระบวนการเริ่มต้นสองขั้นตอนซึ่งอาจยุ่งยากและอาจนำไปสู่ความซับซ้อนเพิ่มเติมและปัญหาที่อาจเกิดขึ้น [1]

3. ข้อ จำกัด การฉีดขึ้นอยู่กับการพึ่งพา: คอนเทนเนอร์ IOC ของ MVVMCROSS ปฏิบัติต่อแง่มุมของซิงเกิลในระดับอินเตอร์เฟสไม่ใช่ประเภทอินสแตนซ์ ซึ่งหมายความว่าหากคลาสใช้หลายอินเทอร์เฟซ MVVMCROSS อาจสร้างอินสแตนซ์แยกต่างหากสำหรับแต่ละอินเตอร์เฟสเว้นแต่จะได้รับการจัดการอย่างชัดเจน [4] แม้ว่าสิ่งนี้จะไม่เกี่ยวข้องโดยตรงกับ MS.DI แต่ก็เน้นถึงความจำเป็นในการจัดการอย่างรอบคอบเมื่อรวมระบบการฉีดพึ่งพาการพึ่งพาที่แตกต่างกัน

4. การอัพเกรดและปัญหาความเข้ากันได้: การอัพเกรดรุ่น MVVMCROSS บางครั้งสามารถแนะนำปัญหาเกี่ยวกับการฉีดพึ่งพาโดยเฉพาะอย่างยิ่งเมื่อใช้แบบจำลองมุมมองฐาน ตัวอย่างเช่นการเปลี่ยนแปลงในตรรกะการเลือกตัวสร้างระหว่างรุ่นอาจส่งผลต่อวิธีการพึ่งพาการฉีด [2]

เพื่อเอาชนะความท้าทายเหล่านี้นักพัฒนามักเลือกที่จะปรับปรุงการทำงานของ MVVMCROSS โดยไม่ต้องเปลี่ยนคอนเทนเนอร์ Core IOC สิ่งนี้ช่วยให้การใช้เฟรมเวิร์กการฉีดพึ่งพาการพึ่งพาเพิ่มเติมเช่น MS.DI ควบคู่ไปกับ MVVMcross ซึ่งให้ความยืดหยุ่นในการเลือกผู้ให้บริการ IOC [1] [5] อย่างไรก็ตามสิ่งนี้ต้องมีการตั้งค่าและการจัดการอย่างระมัดระวังเพื่อหลีกเลี่ยงความขัดแย้งและสร้างความมั่นใจในการรวมที่ราบรื่น

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

การอ้างอิง:
[1] https://github.com/mvvmcross/mvvmcross/issues/4436
[2] https://github.com/mvvmcross/mvvmcross/issues/4183
[3] https://docs.particular.net/nservicebus/dependency-inject
[4] https://stackoverflow.com/questions/23700121/possible-bug-with-dependency-injection-on-mvvmcross
[5] https://github.com/mvvmcross/mvvmcross/issues/3804
[6] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[7] https://msicc.net/using-microsofts-extensions-dependencedinjection-package-in-xamarin-forms-mvvm-applications-part-2/
[8] https://www.mvvmcross.com/documentation/fundamentals/dependency-injection