L'uso di Microsoft.Extensions.DependencyIncied con MVVMCRoss può presentare diverse sfide e problemi noti:
1. Incompatibilità con MVVMCRoss Processo di avvio: MVVMCRoss richiede la possibilità di risolvere i componenti partway attraverso il processo di configurazione e quindi continuare a registrare più componenti. Tuttavia, Microsoft.Extensions.DependencyIniect (MS.DI) richiede che tutti i componenti siano registrati prima di chiamare `.Build ()` Nella raccolta del servizio. Questa differenza fondamentale rende i due sistemi incompatibili senza alternative aggiuntive, come la traduzione manuale dei servizi da un contenitore all'altro [1].
2. Processo di avvio a due stadi: per sfruttare Ms.DI con MVVMCRoss, gli sviluppatori spesso costruiscono una raccolta di servizi Ms.DI e quindi traducono i suoi servizi nell'istanza MVVMCROSS `IMVXIOCProvider". Questo approccio introduce un processo di avvio a due stadi, che può essere ingombrante e può portare a ulteriore complessità e potenziali problemi [1].
3. Limitazioni di iniezione di dipendenza: il contenitore IOC di MVVMCROSS tratta l'aspetto singleton a livello di interfaccia, non il tipo istanziato. Ciò significa che se una classe implementa più interfacce, MVVMCROSS potrebbe creare istanze separate per ciascuna interfaccia se non esplicitamente gestito [4]. Sebbene ciò non sia direttamente correlato alla Ms.DI, evidenzia la necessità di un'attenta gestione quando si integrano diversi sistemi di iniezione di dipendenza.
4. Problemi di aggiornamento e compatibilità: l'aggiornamento delle versioni MVVMCRoss può talvolta introdurre problemi con iniezione di dipendenza, soprattutto quando si utilizzano i modelli di visualizzazione di base. Ad esempio, le modifiche nella logica di selezione del costruttore tra le versioni potrebbero influire sul modo in cui le dipendenze vengono iniettate [2].
Per ovviare a queste sfide, gli sviluppatori spesso scelgono di migliorare la funzionalità di MVVMCRoss senza sostituire il suo contenitore Core IOC. Ciò consente l'uso di framework di iniezione di dipendenza aggiuntivi come Ms.DI insieme a MVVMCRoss, fornendo flessibilità nella scelta del provider IOC [1] [5]. Tuttavia, ciò richiede un'attenta configurazione e gestione per evitare conflitti e garantire l'integrazione senza soluzione di continuità.
In sintesi, durante l'utilizzo di Microsoft.Extensions.DependencyIncied con MVVMCRoss, richiede un'attenta considerazione del processo di avvio, potenziali incompatibilità e un'attenta gestione delle dipendenze per evitare problemi noti.
Citazioni:[1] https://github.com/mvvmcross/mvvmcross/issues/4436
[2] https://github.com/mvvmcross/mvvmcross/issues/4183
[3] https://docs.particular.net/nservicebus/dipendency-iniection/extensions-dapendencyiniection
[4] https://stackoverflow.com/questions/23700121/possible-bug-with-with --iniection-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-dependencyiniection-package-in-xamarin-forms-mvvm-applications-part-2/
[8] https://www.mvvmcross.com/documentation/fundamentals/dipendency-iniection