MvvmCross のビュー モデル間でナビゲーション オブジェクトを渡すことについて議論しているいくつかのスレッド (例:こことここ) を見てきましたが、なぜ MvvmCross に複雑な型のシリアル化に対する組み込みサポートがないのか疑問に思います。
明確にさせてください。CustomerName (文字列) と RecentPurchases (リスト) で構成されるナビゲーション オブジェクトがあり、Purchase 型がいくつかのプリミティブ型プロパティを持つクラスである場合、このナビゲーション オブジェクトを ShowViewModel に渡すと、受信側で正しい CustomerName と、RecentPurchases の null。List は、MvvmCross によってシリアル化に十分なほど単純であると認識されません。これは、RecentPurchases を SerializedRecentPurchases に置き換え、その値を次のように割り当てることで簡単に修正できます。
SerializedRecentPurchases = Mvx.Resolve<IMvxJsonConverter>()
.SerializeObject(RecentPurchases);
同様に、文字列は ViewModels の Init メソッドで逆シリアル化されます。
それはすべて非常に単純ですが、開発者がこれらのコード行を何度も書く手間を省くために、MvvmCross がシリアル化を実行しようとしない理由に少し当惑しています。ナビゲーション オブジェクトで大量のデータを渡す場合は注意が必要なのはわかっていますが、一方で、ナビゲーション (または永続状態) オブジェクトに単純な複合型のコレクションが含まれていることはよくあることです。 MvvmCross は、このシナリオをすぐにサポートしましたか?