3

ドキュメントによると、Windowsストアアプリでは、アプリケーション設定にWinRTタイプのみを保存できます。一緒に保持する必要があるローミング設定には、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 に答える