2011-01-07 107 views
2

如何將對象(類)存儲到獨立存儲中?孤立存儲問題

感謝

+3

Awww,這將是一個孤獨的對象。 – 2011-01-07 04:44:56

回答

5

的寫入和讀取/對象(XML序列化/反序列化)的獨立存儲:

namespace IsolatedStorageSerialization 
{ 
    using System; 
    using System.IO; 
    using System.IO.IsolatedStorage; 
    using System.Xml; 
    using System.Xml.Serialization; 

    internal static class Program 
    { 
     private static void Main() 
     { 
      object thisIsAnObject = new object(); 

      SerializeToIsolatedStorage(thisIsAnObject, "object.xml"); 

      object anotherObject = DeserializeFromIsolatedStorage<object>("object.xml"); 

      Console.ReadLine(); 
     } 

     private static void SerializeToIsolatedStorage<T>(T obj, string filename) 
     { 
      if ((obj == null) || string.IsNullOrEmpty(filename)) 
      { 
       return; 
      } 

      using (var store = IsolatedStorageFile.GetUserStoreForAssembly()) 
      using (var stream = store.CreateFile(filename)) 
      using (var writer = XmlWriter.Create(stream)) 
      { 
       new XmlSerializer(obj.GetType()).Serialize(writer, obj); 
      } 
     } 

     private static T DeserializeFromIsolatedStorage<T>(string filename) 
     { 
      if (string.IsNullOrEmpty(filename)) 
      { 
       return default(T); 
      } 

      using (var store = IsolatedStorageFile.GetUserStoreForAssembly()) 
      using (var stream = store.OpenFile(filename, FileMode.Open)) 
      using (var reader = XmlReader.Create(stream)) 
      { 
       return (T)new XmlSerializer(typeof(T)).Deserialize(reader); 
      } 
     } 
    } 
} 
1

讀取/寫入獨立存儲不超過讀/寫普通文件系統不同。所以如果你希望將你的對象存儲到獨立的存儲中,你需要序列化它 - 你在.NET中有很多序列化選項,包括運行時序列化,XML序列化,DataContract(WCF)序列化,JSON序列化等等。並且不要忘記版本化你的對象。對象序列化將爲您提供可保存在獨立存儲中的字節或字節流。

要開始使用獨立存儲,您可以參考以下鏈接:

http://www.codeproject.com/KB/dotnet/IsolatedStorage.aspx

http://msdn.microsoft.com/en-us/library/3ak841sy(v=VS.100).aspx