Profiel van IanSilverlight for BusinessFoto'sWeblogLijstenMeer ![]() | Help |
|
27 november Serializing Objects to Isolated Storage in Silverlight 2Silverlight 2 does not have a BinaryFormatter like the full framework does so you have to take a different approach to serializing data to Isolated Storage. However there is a simple solution by using the DataContractSerializer. You will need to add a reference to System.Runtime.Serialization. This will serialize the object to an Xml format and is what Silverlight uses when you add a service reference. So if we have an object called Person, we can use the DataContract and DataMember attributes to mark it up as follows: [DataContract] public class Person { [DataMember] public int PersonId { get; set; } [DataMember] public string Name { get; set; } } You can then use the DataContractSerializer as follows to save Person data to Iso storage: Person p = new Person() { PersonId = 1, Name = "Fred" }; using (IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForSite()) { IsolatedStorageFileStream stream = store.CreateFile("Person.dat"); DataContractSerializer serializer = new DataContractSerializer(typeof(Person)); serializer.WriteObject(stream, p); stream.Close(); } MessageBox.Show("Data Saved"); And the following to read it: Person p; using (IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForSite()) { IsolatedStorageFileStream stream = store.OpenFile("Person.dat", FileMode.Open); DataContractSerializer serializer = new DataContractSerializer(typeof(Person)); p = (Person)serializer.ReadObject(stream); stream.Close(); } MessageBox.Show("Data Loaded"); TextBlock1.Text = p.Name + " " + p.PersonId; If you want to make this more generic you could create a generic method as follows: private void SaveData<T>(T dataToSave,string fileName) { using (IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForSite()) { IsolatedStorageFileStream stream = store.CreateFile(fileName); DataContractSerializer serializer = new DataContractSerializer(typeof(T)); serializer.WriteObject(stream, dataToSave); stream.Close(); } }
Then you can call it as follows: SaveData<ObservableCollection<Person>>(people, "People.dat"); SaveData<Person>(person, "Person.dat");
Cheers Ian ReactiesMeld je aan bij Windows Live ID om een reactie toe te voegen (als je Hotmail, Messenger of Xbox LIVE gebruikt, heb je al een Windows Live ID). Aanmelden Heb je geen Windows Live ID? Maak er nu een aan Links naar je weblog (2)De URL voor de link naar dit weblogitem is: http://blackburnian.spaces.live.com/blog/cns!FB8B852EF1AB0B35!1107.trak Weblogs die naar dit item verwijzen
|
|
|