3

根据文档,在 Windows 应用商店应用程序中,我只能将 WinRT 类型存储在 ApplicationSettings 中。对于应该保持在一起的漫游设置,我可以使用 ApplicationDataCompositeValue。尝试存储自己的类或结构的实例会导致异常,并显示消息“WinRT 信息:尝试序列化要写入应用程序数据存储的值时出错。附加信息:不支持这种类型的数据”。术语“试图序列化”表示必须有某种方式来序列化应用程序数据 API 的类型。

有谁知道我怎么能做到这一点?

我尝试了 DataContract 序列化,但它不起作用。

4

1 回答 1

8

我认为不支持自定义/自己的类型。

请参阅http://msdn.microsoft.com/en-us/library/windows/apps/hh464917.aspx:“应用程序设置支持 Windows 运行时数据类型。”

但是您可以将对象序列化为 XML 并保存为字符串...(请参见下面的代码)

public static string Serialize(object obj)
{
    using (var sw = new StringWriter()) 
    {
        var serializer = new XmlSerializer(obj.GetType());
        serializer.Serialize(sw, obj);
        return sw.ToString();
    }
}

public static T Deserialize<T>(string xml)
{
    using (var sw = new StringReader(xml))
    {
        var serializer = new XmlSerializer(typeof(T));
        return (T)serializer.Deserialize(sw);
    }
}

https://github.com/MyToolkit/MyToolkit/blob/master/src/MyToolkit/Serialization/XmlSerialization.cs

也看看这个类:

https://github.com/MyToolkit/MyToolkit/wiki/XmlSerialization

免责声明:以上链接来自我的项目

于 2012-09-23T20:17:10.957 回答