MVVMCross V3では、ViewModel構造に関していくつかの重要な変更が導入されました。これは、開発者のテスト可能性と使いやすさを高めることを目的としています。重要な変更は次のとおりです。
1。コンストラクターベースの依存関係注入:主要な変更の1つは、コンストラクターベースの依存関係注入の導入でした。これにより、開発者はViewModelのコンストラクターに依存関係を直接注入することで、依存関係を管理し、テスト能力を向上させることができました。これに先立って、依存関係はしばしば他の手段を通じて管理されていましたが、これはそれほど簡単ではありません。
2。タイプ付きナビゲーションクラスを使用したナビゲーション:MVVMCross V3は、タイプ付きナビゲーションクラスを使用する新しいナビゲーションシステムを導入しました。これは、ビューに直接ナビゲートする代わりに、開発者が強いタイプのクラスを使用してビューモデル間でナビゲートできることを意味していました。このアプローチは、プラットフォーム固有の詳細を抽象化することにより、クロスプラットフォームナビゲーションを簡素化しました。
3。墓地の保存とリロードの墓地状態:V3で導入されたもう1つの重要な機能は、ViewModel状態を保存およびリロードする機能でした。これは、メモリの制約のためにオペレーティングシステムによってアプリケーションが終了する可能性がある「トゥームストーン」シナリオの処理に特に役立ち、ユーザーが戻ってきたときに復元されます。 ViewModel状態を保存することにより、アプリケーションは終了して再起動した後でも現在の状態を維持できます。
4。 `init()`方法に渡されたナビゲーションパラメーター:MVVMCrossの古いバージョンでは、ナビゲーションパラメーターがViewModelのコンストラクターに直接渡されました。ただし、V3から始めて、これらのパラメーターは代わりに `init()`メソッドに渡されました。この変更により、コンストラクターは依存関係の注入のみに使用することができ、コードをよりクリーンにし、より保守しやすくしました。 `init()`メソッドは、ナビゲーションパラメーターが処理される場所になり、より柔軟な初期化ロジックが可能になりました。
全体として、MVVMCross V3のこれらの変更は、ビューモデルの構築と管理のより構造化された保守可能な方法を提供し、クロスプラットフォームアプリケーションの全体的な開発エクスペリエンスを強化しました。
引用:[1] https://www.mvvmcross.com/documentation/fundamentals/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/advanced/customizing-using-app-and-setup
[5] https://www.mvvmcross.com/blog/
[6] https://softwareengineering.stackexchange.com/questions/389086/do-we-need-models-if if-are-using-viewmodels
[7] https://stackoverflow.com/questions/16723078/mvvmcross-does-showviewmodel-always-construct-newインスタンス
[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バインディング
[11] https://github.com/mvvmcross/mvvmcross/blob/develop/changelog.md