Замена контейнера IOC по умолчанию в MVVMcross может представлять несколько общих проблем, в первую очередь из-за того, как MVVMcross интегрируется со своим встроенным контейнером IOC. Вот некоторые из проблем, с которыми вы можете столкнуться:
1. Регистрация и синхронизация услуг **
Одним из основных проблем является обеспечение того, чтобы все необходимые услуги были зарегистрированы и что «IserviceProvider» остается синхронизированным с `iserviceCollection '. MVVMcross продолжает регистрировать свои собственные услуги после первоначальной настройки, что может привести к несоответствиям, если не обрабатываться должным образом. Это требует обновления поставщика при каждой регистрации коллекции, которая может повлиять на производительность [1].2. Отсутствует услуги mvvmcross **
MVVMcross опирается на несколько встроенных услуг, таких как «imvxloggerprovider», «imvxsettings» и «imvxstart», среди прочих. При замене контейнера МОК эти службы не могут быть автоматически зарегистрированы, что приводит к сбоям запуска. Вам необходимо вручную зарегистрировать эти услуги или найти способ, чтобы MVVMcross обрабатывал их регистрацию в вашем пользовательском контейнере [1].3. Проблемы жизни и обратного вызова **
MVVMcross использует обратные вызовы, когда зарегистрированы службы, которые могут быть сложно обрабатывать в пользовательском адаптере IOC. Кроме того, управление жизнью (например, Singleton, Transiet) может потребовать пользовательской реализации, чтобы соответствовать ожиданиям MVVMcross [4].4. Интеграция со сторонними библиотеками **
Использование другого контейнера IOC, подобного .NET Core's DI позволяет легче интегрировать со сторонними библиотеками, которые обеспечивают методы расширения для регистрации (например, `ihttpclientFactory`,` polly`, `Automapper`). Тем не менее, обеспечение того, чтобы эти библиотеки беспрепятственно работали с пользовательской настройкой MVVMcross, может быть сложной задачей [1].5. Соображения производительности **
Создание нового экземпляра `iserviceprovider` Каждый раз, когда зарегистрированы службы, может привести к проблемам производительности. Это связано с тем, что `buildserviceprovider ()` вызывается неоднократно, что может быть дорогостоящим с точки зрения ресурсов и времени [1].6. Настройка и переопределение **
Чтобы полностью заменить контейнер IOC по умолчанию, вам необходимо переопределить метод `createiocprovider` в вашем классе настройки. Это требует создания адаптера, который отображает вашу пользовательскую реализацию IOC с интерфейсом MVVMcross `imvxiocProvider`. Этот процесс может быть сложным и требует тщательной обработки конкретных требований MVVMcross [4].7. Соображения, специфичные для платформы **
При работе с такими платформами, как Xamarin, могут возникнуть дополнительные соображения из -за конкретных процессов настройки и инициализации этих сред. Например, обеспечение того, чтобы сервисы, специфичные для Android, были должным образом зарегистрированы и разрешены [10].Таким образом, замена контейнера IOC по умолчанию в MVVMcross включает в себя решение регистрации услуг, синхронизацию, отсутствующие сервисы, управление жизнью, интеграцию со сторонними библиотеками, оптимизацию производительности и соображения, специфичные для платформы. Каждая из этих областей требует тщательной обработки, чтобы обеспечить плавный переход и надлежащую функциональность применения.
Цитаты:[1] https://stackoverflow.com/questions/64478974/replace-default-ioc-container-in-mvvmcross
[2] https://yanxiaodi.gitbook.io/xamarin-mvvmcross-handbook/using-mvvmcross-to-create-your-first-xamarin-app/creating-to-core-project/adding-an-app-class
[3] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[4] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-and-setup
[5] https://learn.microsoft.com/en-us/archive/msdn-magazine/2013/february/mvvm-ioc-containers-and-mvvm
[6] https://docs.spring.io/spring-framework/docs/4.3.9.reelease/spring-framework-reference/html/beans.html
[7] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[8] https://www.mvvmcross.com/documentation/tutorials/tipcalc/the-core-project
[9] https://www.mvvmcross.com/documentation/fundamentals/inversion-of-control-ioc
[10] https://stackoverflow.com/questions/53752857/xamarin-android-специфический