C# 将自定义类型添加到已知类型的SuspensionManager

C# 将自定义类型添加到已知类型的SuspensionManager,c#,windows-phone-8.1,windows-store-apps,xml-serialization,C#,Windows Phone 8.1,Windows Store Apps,Xml Serialization,我正在开发一个Windows Phone 8.1应用程序,在该应用程序中,我已将自定义类型传递给页面导航,但当我按home按钮时,它会崩溃,因为它无法序列化在导航时传递的对象。通过查看几个链接,我能想到的就是 [DataContract()] [KnownType(typeof(OrderItem))] [KnownType(typeof(OrderHistoryDataModel))] public class OrderHistoryModel { [DataMember]

我正在开发一个Windows Phone 8.1应用程序,在该应用程序中,我已将自定义类型传递给页面导航,但当我按home按钮时,它会崩溃,因为它无法序列化在导航时传递的对象。通过查看几个链接,我能想到的就是

[DataContract()]
[KnownType(typeof(OrderItem))]
[KnownType(typeof(OrderHistoryDataModel))]
public class OrderHistoryModel
{
    [DataMember]
    public bool success { get; set; }
    [DataMember]
    public List<OrderHistoryDataModel> data { get; set; }
}

[DataContract()]
public class OrderItem
{
    [DataMember]
    public string id { get; set; }
    [DataMember]
    public string store_id { get; set; }
    [DataMember]
    public string user_id { get; set; }
    [DataMember]
    public string order_id { get; set; }
    [DataMember]
    public string device_id { get; set; }
    [DataMember]
    public string device_token { get; set; }
    [DataMember]
    public string platform { get; set; }
    [DataMember]
    public string product_id { get; set; }
    [DataMember]
    public string variant_id { get; set; }
    [DataMember]
    public string weight { get; set; }
    [DataMember]
    public string mrp_price { get; set; }
    [DataMember]
    public string price { get; set; }
    [DataMember]
    public string discount { get; set; }
    [DataMember]
    public string unit_type { get; set; }
    [DataMember]
    public string quantity { get; set; }
    [DataMember]
    public string status { get; set; }
    [DataMember]
    public string product_name { get; set; }
    [DataMember]
    public string product_brand { get; set; }

    [DataMember]
    public string subcategory_id { get; set; }
    [DataMember]
    public string subcategory_name { get; set; }
    [DataMember]
    public string category_id { get; set; }
    [DataMember]
    public string product_image { get; set; }
}

[DataContract()]
[KnownType(typeof(OrderItem))]
public class OrderHistoryDataModel
{
    [DataMember]
    public string order_id { get; set; }
    [DataMember]
    public int paid { get; set; }
    [DataMember]
    public string payment_method { get; set; }
    [DataMember]
    public string note { get; set; }
    [DataMember]
    public string order_date { get; set; }
    [DataMember]
    public string status { get; set; }
    [DataMember]
    public string total { get; set; }
    [DataMember]
    public string discount { get; set; }
    [DataMember]
    public string checkout { get; set; }
    [DataMember]
    public string shipping_charges { get; set; }
    [DataMember]
    public string address { get; set; }
    [DataMember]
    public List<OrderItem> order_items { get; set; }

    [DataMember]
    public string UserName { get; set; }
    [DataMember]
    public string statusApprovedColor { get; set; }
    [DataMember]
    public string statusShippedColor { get; set; }
    [DataMember]
    public string statusDeliveryColor { get; set; }
}
[DataContract()]
[KnownType(typeof(OrderItem))]
[KnownType(typeof(OrderHistoryDataModel))]
公共类OrderHistoryModel
{
[数据成员]
公共bool成功{get;set;}
[数据成员]
公共列表数据{get;set;}
}
[DataContract()]
公共类OrderItem
{
[数据成员]
公共字符串id{get;set;}
[数据成员]
公共字符串存储\u id{get;set;}
[数据成员]
公共字符串用户_id{get;set;}
[数据成员]
公共字符串顺序_id{get;set;}
[数据成员]
公共字符串设备\u id{get;set;}
[数据成员]
公共字符串设备\u令牌{get;set;}
[数据成员]
公共字符串平台{get;set;}
[数据成员]
公共字符串乘积_id{get;set;}
[数据成员]
公共字符串变量_id{get;set;}
[数据成员]
公共字符串权重{get;set;}
[数据成员]
公共字符串mrp_price{get;set;}
[数据成员]
公共字符串price{get;set;}
[数据成员]
公共字符串折扣{get;set;}
[数据成员]
公共字符串单元\u类型{get;set;}
[数据成员]
公共字符串数量{get;set;}
[数据成员]
公共字符串状态{get;set;}
[数据成员]
公共字符串产品名称{get;set;}
[数据成员]
公共字符串乘积_brand{get;set;}
[数据成员]
公共字符串子类别_id{get;set;}
[数据成员]
公共字符串子类别_name{get;set;}
[数据成员]
公共字符串类别_id{get;set;}
[数据成员]
公共字符串乘积_图像{get;set;}
}
[DataContract()]
[KnownType(typeof(OrderItem))]
公共类OrderHistoryDataModel
{
[数据成员]
公共字符串顺序_id{get;set;}
[数据成员]
公共整数{get;set;}
[数据成员]
公共字符串支付方法{get;set;}
[数据成员]
公共字符串注释{get;set;}
[数据成员]
公共字符串顺序\u日期{get;set;}
[数据成员]
公共字符串状态{get;set;}
[数据成员]
公共字符串总计{get;set;}
[数据成员]
公共字符串折扣{get;set;}
[数据成员]
公共字符串签出{get;set;}
[数据成员]
公共字符串传送费用{get;set;}
[数据成员]
公共字符串地址{get;set;}
[数据成员]
公共列表顺序_项{get;set;}
[数据成员]
公共字符串用户名{get;set;}
[数据成员]
公共字符串statusApprovedColor{get;set;}
[数据成员]
公共字符串statusShippedColor{get;set;}
[数据成员]
公共字符串statusDeliveryColor{get;set;}
}
同样在App.xaml.cs上,我添加了

SuspensionManager.KnownTypes.Add(typeof(List<GroceryApp.Models.OrderHistoryDataModel>));
        SuspensionManager.KnownTypes.Add(typeof(List<GroceryApp.Models.OrderItem>));
        SuspensionManager.KnownTypes.Add(typeof(GroceryApp.Models.OrderHistoryDataModel));
SuspensionManager.KnownTypes.Add(typeof(List));
SuspensionManager.KnownTypes.Add(类型(列表));
SuspensionManager.KnownTypes.Add(typeof(GroceryApp.Models.OrderHistoryDataModel));

但它还是崩溃了。因此,我的问题是如何将自定义类型添加到已知类型以进行序列化?

我认为您需要在标题中包含引用

[DataContract(IsReference = true)]

我认为您需要在标题中包含引用

[DataContract(IsReference = true)]

数据大小有多大需要超过6秒?我正在传递OrderHistoryDataModel的对象,但大小不大。它需要的时间不到一秒,即几毫秒。数据大小有多大?需要6秒以上吗?我正在传递OrderHistoryDataModel的对象,但大小不大。所需时间不到一秒钟,即几毫秒。