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