我已經看過一些討論在MvvmCross視圖模型之間傳遞導航對象的線索(例如here和here),我想知道爲什麼MvvmCross沒有內建的對複雜類型序列化的支持。爲什麼MvvmCross沒有導航對象的內在序列化?
讓我澄清一下。如果我有一個由客戶名稱(字符串)和RecentPurchases(列表)的瀏覽對象,其中購買的類型是用幾個基本類型屬性的類,然後當我通過此導航對象ShowViewModel,在接收側I將得到一個正確的CustomerName和null爲RecentPurchases。列表不被MvvmCross識別爲足夠簡單的序列化。這可以很容易地固定通過用SerializedRecentPurchases替換RecentPurchases並分配它的值是這樣的:
SerializedRecentPurchases = Mvx.Resolve<IMvxJsonConverter>()
.SerializeObject(RecentPurchases);
以類似的方式將字符串中的ViewModels' Init方法反序列化。
現在的情況很簡單,但我有點不解,爲什麼MvvmCross不嘗試從一次又一次地寫幾行代碼進行系列化開發節能。我知道我們必須要小心傳遞大量的數據與導航的對象,但在另一方面,它是相當常見的導航(或持續狀態)的對象可能包含簡單的複雜類型的集合,所以它不會是,如果更實際MvvmCross支持這種開箱即用的方案嗎?
感謝斯圖爾特爲一個偉大的答案。我並不完全同意JSON部分 - 只要我們正在討論內部Mvx序列化,不管什麼序列化格式和使用哪種風味都不重要。無論如何,這對開發者來說都是透明的。但是當保持對象較小時,你是絕對正確的:我沒有意識到在一些移動平臺上,你只能使用ca.導航對象的1000字節數據。不過,我認爲值得修正這個錯誤,以便對小複雜對象有內在的支持。 –