2012-04-24 6 views
0

RoamingSettingsに保存する属性は何ですか?RoamingSettingsに保存する属性は何ですか?

データをシリアル化するときと同様に、DataContractDataMemberの属性が必要です。私はXMLに私のクラスをシリアル化することができますが、私はRoamingSettingsで保存する必要があります。

roamingSettings.Values["MyType"] = _mytype; 

デバッグ中、私はこのエラーメッセージを取得:このタイプの

データはサポートされていません。
WinRTの情報:エラーが私は属性を必要と推測するアプリケーションデータストア

に書き込まれる値をシリアル化しようとしているが、1?

答えて

1

この状況を処理する最良の方法は、オブジェクトを文字列にシリアル化して格納することです。

格納された文字列値をターゲットオブジェクトにデシリアライズします。

+0

呼び出すうん、ありがとう!しかし、私はそれを行うことができる非同期な方法を見つけることができません:/ –

4

使用正しいStorageFolder ApplicationData.Current.RoamingFolder

public static class RoamingStorage<T> { 

    public static async void SaveData(string filename, T data) 
    { 
     try 
     { 
      StorageFile file = await ApplicationData.Current.RoamingFolder.CreateFileAsync(filename, CreationCollisionOption.ReplaceExisting); 
      using (IRandomAccessStream raStream = await file.OpenAsync(FileAccessMode.ReadWrite)) 
      { 
       using (IOutputStream outStream = raStream.GetOutputStreamAt(0)) 
       { 
        DataContractSerializer serializer = new DataContractSerializer(typeof(List<Item>)); 
        serializer.WriteObject(outStream.AsStreamForWrite(), data); 
        await outStream.FlushAsync(); 
       } 
      } 
     } 
     catch (Exception exc) 
     { 
      throw exc; 
     } 
    } 

    public static async System.Threading.Tasks.Task<T> LoadData(string filename) 
    { 
     T data = default(T); 
     try 
     { 
      StorageFile file = await ApplicationData.Current.RoamingFolder.GetFileAsync(filename); 
      using (IInputStream inStream = await file.OpenSequentialReadAsync()) 
      { 
       DataContractSerializer serializer = new DataContractSerializer(typeof(T)); 
       data = (T)serializer.ReadObject(inStream.AsStreamForRead()); 
      } 
     } 
     catch (FileNotFoundException ex) 
     { 
      throw ex; 
     } 
     catch (Exception ex) 
     { 
      throw ex; 
     } 
     return data; 
    } 
} 

RoamingStorage<List<Item>>.SaveData(FILENAME,Items); 

List<Item> data = await RoamingStorage<List<Item>>.LoadData(FILENAME); 
関連する問題