MVVMCross'taki varsayılan IOC kapsayıcının değiştirilmesi, öncelikle MVVMCross'un yerleşik IOC konteyneriyle entegre olma şekli nedeniyle çeşitli yaygın sorunlar getirebilir. İşte karşılaşabileceğiniz bazı zorluklar:
1. Hizmet Kaydı ve Senkronizasyon **
Ana konulardan biri, gerekli tüm hizmetlerin kaydedilmesini ve `` IserviceProvider '' nin `` IserviceCollection 'ile senkronize olmasını sağlamaktır. MVVMCross, ilk kurulumdan sonra kendi hizmetlerini kaydetmeye devam eder, bu da düzgün bir şekilde ele alınmazsa tutarsızlıklara yol açabilir. Bu, sağlayıcının performansı etkileyebilecek her bir koleksiyon kaydında güncellenmesini gerektirir [1].2. Eksik MVVMCross Hizmetleri **
MVVMCross, diğerlerinin yanı sıra `` ImvxLoggerProvider`, `Imvxsettings 've' ImvxStart 'gibi çeşitli yerleşik hizmetlere dayanır. IOC kapsayıcısını değiştirirken, bu hizmetler otomatik olarak kaydedilmeyebilir ve bu da başlangıç hatalarına yol açabilir. Bu hizmetleri manuel olarak kaydetmeniz veya MVVMCROSS'un kayıtlarını özel konteynerde ele almasına izin vermenin bir yolunu bulmanız gerekir [1].3. Yaşam ve geri arama sorunları **
MVVMCross, hizmetler kaydedildiğinde geri arama kullanır, bu da özel bir IOC adaptöründe işlenmesi zor olabilir. Ek olarak, ömrü yönetmek (örn. Singleton, geçici) MVVMCross'un beklentilerini karşılamak için özel bir uygulama gerektirebilir [4].4. Üçüncü taraf kütüphaneleriyle entegrasyon **
.NET Core's Di gibi farklı bir IOC kapsayıcısı kullanmak, kayıt için uzatma yöntemleri sağlayan üçüncü taraf kütüphanelerle daha kolay entegrasyon sağlar (örn. `` IHTTPClientFactory`, `Polly`,` Otomatik Perir '). Bununla birlikte, bu kütüphanelerin MVVMCross'un özel kurulumuyla sorunsuz bir şekilde çalışmasını sağlamak zor olabilir [1].5. Performans Hususları **
Hizmetler her tescil edildiğinde yeni bir `` iServiceProvider '' örneği oluşturmak performans sorunlarına yol açabilir. Bunun nedeni, kaynak ve zaman açısından pahalı olabilen `` BuildServiceProvider () 'olarak adlandırılmasıdır [1].6. Özelleştirme ve geçersiz kılma **
Varsayılan IOC kapsayıcısını tamamen değiştirmek için, kurulum sınıfınızdaki `CreateIocProvider 'yöntemini geçersiz kılmanız gerekir. Bu, özel IOC uygulamanızı MVVMCross'un `ImvxiocProvider 'arayüzüyle eşleyen bir adaptör oluşturulmasını gerektirir. Bu işlem karmaşık olabilir ve MVVMCross'un özel gereksinimlerinin dikkatli bir şekilde ele alınmasını gerektirir [4].7. Platforma özgü hususlar **
Xamarin gibi platformlarla çalışırken, bu ortamların spesifik kurulumu ve başlatma işlemleri nedeniyle ek hususlar ortaya çıkabilir. Örneğin, Android'e özgü hizmetlerin uygun şekilde kaydedilmesini ve çözülmesini sağlamak [10].Özetle, MVVMCross'taki varsayılan IOC kapsayıcısının değiştirilmesi, hizmet kaydı, senkronizasyon, eksik hizmetler, ömür boyu yönetimi, üçüncü taraf kütüphaneleriyle entegrasyon, performans optimizasyonu ve platforma özgü hususları ele almayı içerir. Bu alanların her biri, uygulamanın düzgün bir geçişini ve uygun işlevselliğini sağlamak için dikkatli bir şekilde işlem gerektirir.
Alıntılar:[1] https://stackoverflow.com/questions/64478974/replace-default-ioc-container-in-mvvmcross
[2] https://yanxiaodi.gitbook.io/xamarin-mvmcross-handbook/using-mvvmcross-to-create-mour-project/adding-an-app-class
[3] https://www.mvvmcross.com/documentation/fundament/viewmodel-lifecycle
[4] https://www.mvvmcross.com/documentation/adved/customizing-using-app-and-setup
[5] https://learn.microsoft.com/en-us/archive/msdn-magazine/2013/febroarity/mvvm-ioc-containers-and-mvvm
[6] https://docs.spring.io/spring-framework/docs/4.3.9.release/spring-framework-refence/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-secific-ioc-in-mvmcross-constructor-issuess/53761392