有没有办法在Windows应用商店应用的ApplicationSettings中存储自己的类的实例?

时间:2012-09-23 15:14:23

标签: configuration windows-8 windows-runtime windows-store-apps

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

有谁知道如何实现这一目标?

我尝试过DataContract序列化,但它没有用。

1 个答案:

答案 0 :(得分: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

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