wierzę, mogą istnieć pewne gremlins w tej poprzedniej odpowiedzi - będzie rejestrować jako problem:/
istnieją inne możliwe drogi do osiągnięcia tego rodzaju złożonego serializable obiektu nawigacji nadal używając JSON oraz części nadrzędne ramy, ale tak naprawdę myślę, że lepiej byłoby po prostu użyć własnego BaseViewModel do serializacji i deserializacji - np. użyć kodu serializacji jak:
public class BaseViewModel
: MvxViewModel
{
private const string ParameterName = "parameter";
protected void ShowViewModel<TViewModel>(object parameter)
where TViewModel : IMvxViewModel
{
var text = Mvx.Resolve<IMvxJsonConverter>().SerializeObject(parameter);
base.ShowViewModel<TViewModel>(new Dictionary<string, string>()
{
{ParameterName, text}
});
}
}
z deserializacji jak:
public abstract class BaseViewModel<TInit>
: MvxViewModel
{
public void Init(string parameter)
{
var deserialized = Mvx.Resolve<IMvxJsonConverter>().DeserializeObject<TInit>(parameter);
RealInit(deserialized);
}
protected abstract void RealInit(TInit parameter);
}
następnie ViewModel tak:
public class FirstViewModel
: BaseViewModel
{
public IMvxCommand Go
{
get
{
return new MvxCommand(() =>
{
var parameter = new A()
{
String1 = "Hello",
String2 = "World",
ComplexObject = new B()
{
Double1 = 42.0,
Double2 = -1
}
};
ShowViewModel<SecondViewModel>(parameter);
});
}
}
}
może przejść do czegoś takiego:
public class SecondViewModel
: BaseViewModel<A>
{
public A A { get; set; }
protected override void RealInit(A parameter)
{
A = parameter;
}
}
udało mi się rozwiązać ten problem poprzez dodanie mvvmcross wtyczki json w moim projekcie UIView. –