MVVMCross V3'te, geliştiriciler için test edilebilirliği ve kullanılabilirliği artırmayı amaçlayan ViewModel yapısı ile ilgili birkaç önemli değişiklik yapıldı. İşte temel değişiklikler:
1. Yapıcı tabanlı bağımlılık enjeksiyonu: Başlıca değişikliklerden biri, yapıcı tabanlı bağımlılık enjeksiyonunun tanıtılmasıydı. Bu, geliştiricilerin bağımlılıkları doğrudan ViewModel'in yapıcısına enjekte etmelerini sağlayarak bağımlılıkları yönetmeyi ve test edilebilirliği iyileştirmeyi kolaylaştırdı. Bundan önce, bağımlılıklar genellikle daha az basit olabilecek başka yollarla yönetildi.
2. Navigasyon Typeed Gezinme Sınıfları: MVVMCross V3, yazılı navigasyon sınıflarını kullanan yeni bir navigasyon sistemi tanıttı. Bu, doğrudan görünümlere gitmek yerine, geliştiricilerin güçlü tip sınıflar kullanarak ViewModels arasında gezinebileceği anlamına geliyordu. Bu yaklaşım, platforma özgü ayrıntıları soyutlayarak platformlar arası navigasyonu basitleştirdi.
3. ViewModel State'i Tomboning için Tasarruf ve Yeniden Yükleme: V3'te tanıtılan bir başka önemli özellik, ViewModel durumunu kaydetme ve yeniden yükleme yeteneğiydi. Bu, özellikle bir uygulamanın bellek kısıtlamaları nedeniyle işletim sistemi tarafından feshedilebileceği ve daha sonra kullanıcı geri döndüğünde geri yüklenebileceği "Tomboning" senaryolarını işlemek için yararlıdır. ViewModel durumunu kaydederek, başvurular sonlandırıldıktan ve yeniden başlatıldıktan sonra bile mevcut durumlarını koruyabilir.
4. Init () `yöntemi: MVVMCross'un eski sürümlerinde navigasyon parametreleri, navigasyon parametreleri doğrudan ViewModel'in yapıcısına iletildi. Ancak, V3 ile başlayarak, bu parametreler bunun yerine `init ()` yöntemine aktarıldı. Bu değişiklik, yapıcının yalnızca bağımlılık enjeksiyonu için kullanılmasına izin vererek, kodu daha temiz ve daha fazla korunabilir hale getirdi. `İnit ()` yöntemi, navigasyon parametrelerinin işlendiği yer haline geldi ve daha esnek başlatma mantığına izin verdi.
Genel olarak, MVVMCross V3'teki bu değişiklikler, viewModels'in oluşturulması ve yönetilmesi ve platformlar arası uygulamalar için genel geliştirme deneyimini geliştirmek için daha yapılandırılmış ve sürdürülebilir bir yol sağlamıştır.
Alıntılar:[1] https://www.mvvmcross.com/documentation/fundament/viewmodel-lifecycle
[2] https://github.com/mvvmcross/mvvmcross/Releases
[3] https://www.reddit.com/r/csharp/comments/12akrcw/mvvm_question_how_do_you_manage_the_interaction/
[4] https://www.mvvmcross.com/documentation/adved/customizing-using-app-and-setup
[5] https://www.mvvmcross.com/blog/
[6] https://softwareengineering.stackexchange.com/questions/389086/do-we-need-models-if-we-ar-using-viewmodels
[7] https://stackoverflow.com/questions/16723078/mvvmcross-does-showviewmodel-always-construct-new-instances
[8] https://stackoverflow.com/questions/39587974/changes-in-mvvmcross-bindings
[9] https://www.mvvmcross.com/documentation/fundamentals/navigation
[10] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[11] https://github.com/mvvmcross/mvvmcross/blob/decelop/changelog.md