Configuration 有没有办法在Windows应用商店应用程序的应用程序设置中存储自己类的实例?

Configuration 有没有办法在Windows应用商店应用程序的应用程序设置中存储自己类的实例?,configuration,windows-8,windows-runtime,windows-store-apps,Configuration,Windows 8,Windows Runtime,Windows Store Apps,根据文档,在Windows应用商店应用程序中,我只能在应用程序设置中存储WinRT类型。对于应该保持在一起的漫游设置,我可以使用ApplicationDataCompositeValue。尝试存储自己的类或结构的实例会导致异常,消息为“WinRT信息:尝试序列化要写入应用程序数据存储的值时出错。其他信息:不支持此类型的数据”。术语“尝试序列化”表示必须有某种方式来序列化应用程序数据API的类型 有人知道我是如何做到的吗 我尝试了DataContract序列化,但没有成功。我认为不支持自定义/自己

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

有人知道我是如何做到的吗


我尝试了DataContract序列化,但没有成功。

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

见: “应用程序设置支持Windows运行时数据类型。”

但您可以将对象序列化为XML并另存为字符串。。。(见下面的代码)

公共静态字符串序列化(对象obj)
{
使用(var sw=new StringWriter())
{
var serializer=新的XmlSerializer(obj.GetType());
序列化器。序列化(sw、obj);
返回sw.ToString();
}
}
公共静态T反序列化(字符串xml)
{
使用(var sw=新的StringReader(xml))
{
var serializer=newxmlserializer(typeof(T));
返回(T)序列化程序。反序列化(sw);
}
}

也请查看本课程:


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

您是否将您的类标记为可序列化?@Mike Brown:我尝试过,但用于Windows应用商店应用的.NET API中没有SerializableAttribute。啊,我不知道这一点。看起来您有一个可行的替代方案:)请参阅,以获取具有自定义类型的解决方案
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);
    }
}