public static void Save <T>(string filePath, T objectToSave, bool useBinary) { using (var stream = PlatformFileAccess.GetSaveFileStream(filePath)) { using (var writer = (useBinary ? XmlDictionaryWriter.CreateBinaryWriter(stream) : XmlWriter.Create(stream))) { var serializer = new DataContractSerializer(typeof(T)); serializer.WriteObject(writer, objectToSave); writer.Flush(); } stream.Close(); } }
public static T Open <T>(string filePath, bool useBinary) where T : class, new() { var loadedObject = default(T); using (var stream = PlatformFileAccess.GetOpenFileStream(filePath)) { using (var reader = (useBinary ? XmlDictionaryReader.CreateBinaryReader(stream, XmlDictionaryReaderQuotas.Max) : XmlReader.Create(stream))) { if (stream.Length > 0) { var serializer = new DataContractSerializer(typeof(T)); loadedObject = (T)serializer.ReadObject(reader); } } stream.Close(); } return(loadedObject ?? new T()); }
public static async Task Save <T>(string filePath, T objectToSave, bool useBinary) { using (var outputStream = await PlatformFileAccess.GetSaveFileStream(filePath)) { using (var stream = outputStream.AsStreamForWrite()) { using (var writer = (useBinary ? XmlDictionaryWriter.CreateBinaryWriter(stream) : XmlWriter.Create(stream))) { var serializer = new DataContractSerializer( typeof(T), new DataContractSerializerSettings { PreserveObjectReferences = true }); serializer.WriteObject(writer, objectToSave); await stream.FlushAsync(); } } } }