我正在为一个imageboard编写简单的imageviewer。我在我的应用程序中使用以下两个类进行导航(Frame.Navigate()方法的导航参数):

public class KonaParameter
{
    public int page { get; set; }
    public string tags { get; set; }

    public KonaParameter()
    {
        page = 1;
    }
}

public class Post
{
    public int id { get; set; }
    public string tags { get; set; }
    public int created_at { get; set; }
    public int creator_id { get; set; }
    public string author { get; set; }
    public int change { get; set; }
    public string source { get; set; }
    public int score { get; set; }
    public string md5 { get; set; }
    public int file_size { get; set; }
    public string file_url { get; set; }
    public bool is_shown_in_index { get; set; }
    public string preview_url { get; set; }
    public int preview_width { get; set; }
    public int preview_height { get; set; }
    public int actual_preview_width { get; set; }
    public int actual_preview_height { get; set; }
    public string sample_url { get; set; }
    public int sample_width { get; set; }
    public int sample_height { get; set; }
    public int sample_file_size { get; set; }
    public string jpeg_url { get; set; }
    public int jpeg_width { get; set; }
    public int jpeg_height { get; set; }
    public int jpeg_file_size { get; set; }
    public string rating { get; set; }
    public bool has_children { get; set; }
    public object parent_id { get; set; }
    public string status { get; set; }
    public int width { get; set; }
    public int height { get; set; }
    public bool is_held { get; set; }
    public string frames_pending_string { get; set; }
    public List<object> frames_pending { get; set; }
    public string frames_string { get; set; }
    public List<object> frames { get; set; }
    public object flag_detail { get; set; }
}


我面临的问题是暂停无法正常工作。在await SuspensionManager.SaveAsync();调用后,SuspensionManager抛出“ SuspensionManager失败”异常(我用谷歌搜索是因为使用了复杂类型)。

我试图将字符串用作导航参数。它可以工作,但是我的参数需要多个字符串(List<string>不起作用,我尝试使用它)。

如何正确暂停我的应用程序?

最佳答案

问题是SuspensionManager使用Frame.GetNavigationState()来获取Frame的历史记录。然后,它尝试将导航历史记录序列化为字符串,但不幸的是,它无法知道如何将自定义复杂类型序列化为Post或KonaParameter之类的参数,并且会失败并发生异常。

如果要使用SuspensionManager,则需要将自己限制为简单类型,例如int或string作为参数。

如果确实需要复杂类型,那么最好将它们存储在带有标识符的某些后台服务/存储库中。然后,您可以将标识符作为参数传递。

07-24 09:32