3

根據文檔,在Windows應用商店應用中,我只能將WinRT類型存儲在ApplicationSettings中。對於應該放在一起的漫遊設置,我可以使用ApplicationDataCompositeValue。嘗試將自己的類或結構的實例存儲到帶有消息「WinRT信息的異常中:試圖序列化要寫入應用程序數據存儲的值的錯誤。其他信息:不支持此類型的數據」。術語「嘗試序列化」表示必須有某種方式才能序列化應用程序數據API的類型。有沒有辦法將自己的類的實例存儲在Windows應用商店應用程序的ApplicationSettings中?

有誰知道我該怎麼做到這一點?

我試過DataContract序列化,但沒有奏效。

+0

您是否將您的類標記爲Serializable? –

+0

@Mike Brown:我試過了,但SerializableAttribute在Windows應用商店的.NET API中不可用。 –

+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

聲明:以上鍊接來自我的項目

相關問題