我已经看过一些讨论在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字节数据。不过,我认为值得修正这个错误,以便对小复杂对象有内在的支持。 –