C# 如何将从ParseObject派生的类序列化到应用程序本地存储中?

C# 如何将从ParseObject派生的类序列化到应用程序本地存储中?,c#,serialization,parse-platform,uwp,C#,Serialization,Parse Platform,Uwp,使用Parse.com,我有一个子类如下: [DataContract] [ParseClassName("Event")] public class TestDerivedObject : ParseObject { [DataMember] [ParseFieldName("name")] public string Name { get { return GetProperty<string>(); } set {

使用Parse.com,我有一个子类如下:

[DataContract]
[ParseClassName("Event")]
public class TestDerivedObject : ParseObject
{
    [DataMember]
    [ParseFieldName("name")]
    public string Name
    {
        get { return GetProperty<string>(); }
        set { SetProperty(value); }
    }

    [DataMember]
    [ParseFieldName("description")]
    public string Description
    {
        get { return GetProperty<string>(); }
        set { SetProperty(value); }
    }
}
它引发了一个例外:

WinRT信息:尝试序列化要写入的值时出错 到应用程序数据存储

其他信息:不支持此类型的数据

如何将这样的对象安全地保存到本地存储?我看到在Android实现中,您可以使用
Pin
方法来为您实现它

Windows 10(UWP)不允许在
LocalSettings
字典中存储复杂对象

应用程序设置支持大多数Windows运行时数据类型:

  • UInt8、Int16、UInt16、Int32、UInt32、Int64、UInt64、单、双
  • 布尔值
  • 字符16,字符串
  • 日期时间,时间跨度
  • GUID、点、大小、矩形
  • 应用程序数据复合值
您不能直接将其他类型的对象分配给应用程序数据。您可以将数据序列化为支持的数据类型之一,例如,您可以将数据序列化为JSON并将其存储为字符串,但您需要处理序列化

资料来源:

因此,您必须自己序列化为字符串。我认为最简单的方法是使用JSON.NET序列化为JSON:

string serialized = JsonConvert.SerializeObject(myTestDerivedObject);

更新(由提供给我的)

看起来您基本上是在使用
Parse.com
对象。因为这些对象是要序列化的PITA,因为它们实现了
IEnumerable
。一种可能的解决方案是使用例如
AutoMapper
Parse.com
对象映射到另一个自定义类型(或手动映射属性)并序列化您自己的类型

string serialized = JsonConvert.SerializeObject(myTestDerivedObject);