Menggunakan Microsoft.Extensions.DependencyInjection dengan MVVMCross dapat menghadirkan beberapa tantangan dan masalah yang diketahui:
1. Ketidakcocokan dengan proses startup MVVMCross: MVVMCross membutuhkan kemampuan untuk menyelesaikan komponen sebagian melalui proses pengaturan dan kemudian terus mendaftarkan lebih banyak komponen. Namun, Microsoft.Extensions.DependencyInjection (MS.DI) mengharuskan semua komponen untuk didaftarkan sebelum memanggil `.build ()` pada koleksi layanan. Perbedaan mendasar ini membuat kedua sistem tidak kompatibel tanpa solusi tambahan, seperti menerjemahkan layanan secara manual dari satu wadah ke yang lain [1].
2. Proses startup dua tahap: Untuk memanfaatkan Ms.Di dengan MVVMCross, pengembang sering membuat koleksi layanan Ms.DI dan kemudian menerjemahkan layanannya ke dalam instance mvvmcross `imvxiocprovider`. Pendekatan ini memperkenalkan proses startup dua tahap, yang dapat rumit dan dapat menyebabkan kompleksitas tambahan dan masalah potensial [1].
3. Keterbatasan Injeksi Ketergantungan: Kontainer IOC MVVMCross memperlakukan aspek singleton pada tingkat antarmuka, bukan tipe instantiated. Ini berarti jika kelas mengimplementasikan beberapa antarmuka, MVVMCross dapat membuat contoh terpisah untuk setiap antarmuka kecuali dikelola secara eksplisit [4]. Meskipun ini tidak secara langsung terkait dengan Ms.DI, ini menyoroti perlunya manajemen yang cermat ketika mengintegrasikan berbagai sistem injeksi ketergantungan.
4. Peningkatan dan masalah kompatibilitas: Meningkatkan versi MVVMCross kadang -kadang dapat memperkenalkan masalah dengan injeksi ketergantungan, terutama saat menggunakan model tampilan dasar. Misalnya, perubahan logika pemilihan konstruktor antar versi dapat memengaruhi bagaimana ketergantungan disuntikkan [2].
Untuk mengatasi tantangan ini, pengembang sering memilih untuk meningkatkan fungsionalitas MVVMCross tanpa mengganti wadah IOC intinya. Hal ini memungkinkan penggunaan kerangka kerja injeksi ketergantungan tambahan seperti Ms.Di bersama MVVMCross, memberikan fleksibilitas dalam memilih penyedia IOC [1] [5]. Namun, ini membutuhkan pengaturan dan manajemen yang cermat untuk menghindari konflik dan memastikan integrasi yang mulus.
Singkatnya, saat menggunakan Microsoft.Extensions. DependencyInjection dengan MVVMCross dimungkinkan, ini membutuhkan pertimbangan yang cermat dari proses startup, ketidakcocokan potensial, dan manajemen ketergantungan yang cermat untuk menghindari masalah yang diketahui.
Kutipan:[1] https://github.com/mvvmcross/mvvmcross/issues/4436
[2] https://github.com/mvvmcross/mvvmcross/issues/4183
[3
[4] https://stackoverflow.com/questions/23700121/possible-bug-with-dependency-clection-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-dependencyInjection-package-in-xamarin-forms-mvvm-applications-part-2/
[8] https://www.mvmcross.com/documentation/fundamentals/dependency-clependency