c# - Isolated Storage & Saving Multiple Objects -
i wish know best way create saving , loading logic can save , load x items. example, in isolated storage can save composite/poco object doing this:
var settings = isolatedstoragesettings.applicationsettings; settings.add("key", myobject);
and load this:
var settings = isolatedstoragesettings.applicationsettings; return settings["key"] myobject;
but how load x amount of objects isolatedstorage? best create list<myobject>
collection , save , whenever want save object load existing , .add(newobject)
, save again?
so this:
list<myobject> myobjects = new list<myobject>(); myobjects.add(newobject); settings.add("myobjects", myobjects);
and when loading:
var myobjects = settings["myobjects"] list<myobject>;
this require deleting , adding collection in settings.add
requires unique key. best way?
i'd rather use settings iso file.
due msdn : isolatedstoragesettings provide convenient way store user specific data key-value pairs in local isolatedstoragefile. typical use save settings, such number of images display per page, page layout options, , on.
so don't think using isolatedstoragesettings best option , if , use isolatedstoragefile.
to save , load content of list , scenario
1- if item added or removed list , searlize list xml , save isolatedstoragefile
private static void serialize(string filename, object source) { var userstore = isolatedstoragefile.getuserstoreforapplication(); using (var stream = new isolatedstoragefilestream(filename, filemode.create, userstore)) { xmlserializer serializer = new xmlserializer(source.gettype()); serializer.serialize(stream, source); } }
2- when want load list @ place , deserialize xml file stored in isolatedstoragefile
public static void deserialize<t>(observablecollection<t> list , string filename) { list = new observablecollection<t>(); var userstore = isolatedstoragefile.getuserstoreforapplication(); if (userstore.fileexists(filename)) { using (var stream = new isolatedstoragefilestream(filename, filemode.open, userstore)) { xmlserializer serializer = new xmlserializer(list.gettype()); var items = (observablecollection<t>)serializer.deserialize(stream); foreach (t item in items) { list.add(item); } } } }
Comments
Post a Comment