2014-02-11 39 views
0

我正在構建我的第一個WP8應用程序,並且遇到了疑問。IsolatedStorage最佳實踐

我必須在IsolatedStorage中保存一些通過序列化三個不同對象獲得的數據。

我加載此數據的代碼是這樣的:

public static Statistics GetData() 
    { 
     Statistics data = new Statistics(); 
     try 
     { 
      using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication()) 
      { 
       using (IsolatedStorageFileStream stream = myIsolatedStorage.OpenFile("stats.xml", FileMode.OpenOrCreate)) 
       { 
        XmlSerializer serializer = new XmlSerializer(typeof(Statistics)); 
        data = (Statistics)serializer.Deserialize(stream); 
       } 
      } 
     } 
     catch (Exception e) 
     { 
      MessageBox.Show(e.Message + "\n" + e.InnerException); 

     } 

     return data; 
    } 

以及保存過程中的數據是這樣的

public static void SaveStats(Statistics stats) 
     { 
      XmlWriterSettings xmlWriterSettings = new XmlWriterSettings(); 
      xmlWriterSettings.Indent = true; 
      try 
      { 
       using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication()) 
       { 
        using (IsolatedStorageFileStream stream = myIsolatedStorage.OpenFile("stats.xml", FileMode.Create)) 
        { 
         XmlSerializer serializer = new XmlSerializer(typeof(Statistics)); 
         using (XmlWriter xmlWriter = XmlWriter.Create(stream, xmlWriterSettings)) 
         { 
          serializer.Serialize(xmlWriter, stats); 
         } 
        } 
       } 
      } 
      catch 
      { 
       MessageBox.Show("Salvataggio non riuscito"); 
      } 
     } 

這工作得很好,現在的問題是,我必須做同樣的也適用於其他兩個班級。

我是否必須重新編寫相同的確切代碼,只更改其他類的統計信息?

還是有什麼辦法更聰明?

回答

1

看看Generics。 你的序列化方法是這樣的:

public static void SaveStats<T>(T obj) where T : class, new() 
{ 
    ... 
    XmlSerializer serializer = new XmlSerializer(typeof(T)); 
    ... 
} 

方法來調用:

SaveStats<Statistics>(new Statistics()); 
SaveStats<OtherObject>(new OtherObject()); 
+0

你是保護人類生命,它的工作非常非常感謝! – user2878912

+0

很高興我能幫忙:) –