Я рассмотрел несколько тем, посвященных прохождению объектов навигации между моделями просмотра в MvvmCross (например, here и here), и мне интересно, почему MvvmCross не имеет встроенной поддержки для сериализации сложных типов.Почему у MvvmCross нет встроенной сериализации объектов навигации?
Позвольте пояснить. Если у меня есть объекты навигации, которые состоят из имени CustomerName (string) и RecentPurchases (List), где Тип покупки - это класс с несколькими свойствами примитивного типа, тогда, когда я передаю этот навигационный объект ShowViewModel, на принимающей стороне я получу исправить имя_имени и null для RecentPurchases. Список не распознается MvvmCross как достаточно простой для сериализации. Это может быть легко исправлена путем замены RecentPurchases с SerializedRecentPurchases и присвоение его значения, как это:
SerializedRecentPurchases = Mvx.Resolve<IMvxJsonConverter>()
.SerializeObject(RecentPurchases);
Аналогичным образом строка десериализуется в методе Init ViewModels.
Все это очень просто, но я немного озадачен тем, что MvvmCross не пытается выполнять сериализацию, экономя разработчикам от написания этих строк кода снова и снова. Я знаю, что мы должны быть осторожны с передачей больших объемов данных с навигационными объектами, но, с другой стороны, довольно распространено, что объекты навигации (или постоянного состояния) могут содержать коллекции простых сложных типов, поэтому было бы более практичным, если бы MvvmCross поддерживал этот сценарий из коробки?
Спасибо, Стюарт, за отличный ответ. Я не полностью согласен с частью JSON - пока мы говорим о внутренней сериализации Mvx, не имеет значения, какой формат сериализации и какой вкус используется. В любом случае это будет прозрачным для разработчиков. Но когда дело доходит до хранения мелких объектов, вы абсолютно правы: я не знал о том, что на некоторых мобильных платформах вы ограничены всего лишь ок. 1000 байтов данных для навигационных объектов. Тем не менее, я думаю, что стоит исправить эту ошибку, поэтому для небольших сложных объектов будет неотъемлемая поддержка. –