public T restoreObject <T>(Stream stream, SaverOutputType format) { stream = new NoCloseStream(stream); switch (format) { case SaverOutputType.Json: using (var reader = new JsonTextReader(new StreamReader(stream))) { return(jsonSaver.Value.restoreObject <T>(reader)); } case SaverOutputType.Bson: using (var reader = new BsonDataReader(stream) { ReadRootValueAsArray = true }) { return(jsonSaver.Value.restoreObject <T>(reader)); } case SaverOutputType.Xml: using (var reader = new XmlTextReader(stream)) { return((T)xmlSaver.Value.restoreObject(reader)); } default: throw new NotImplementedException($"{nameof(SaverOutputType)} format {format} not supported."); } }
public void saveObject(Saveable save, Stream stream, SaverOutputType format) { stream = new NoCloseStream(stream); switch (format) { case SaverOutputType.Json: using (var writer = new JsonTextWriter(new StreamWriter(stream))) { if (WritePretty) { writer.Formatting = Newtonsoft.Json.Formatting.Indented; } jsonSaver.Value.saveObject(save, writer); } break; case SaverOutputType.Bson: using (var writer = new BsonDataWriter(stream)) { jsonSaver.Value.saveObject(save, writer); } break; case SaverOutputType.Xml: using (var writer = new XmlTextWriter(stream, Encoding.Unicode)) { if (WritePretty) { writer.Formatting = System.Xml.Formatting.Indented; } xmlSaver.Value.saveObject(save, writer); } break; } }
public void Save(SaverOutputType type) { var saver = mockup.Get <Saver>(); using (var stream = new MemoryStream()) { saver.saveObject(data, stream, type); } }
public void Load(SaverOutputType type) { var saver = mockup.Get <Saver>(); using (var stream = new MemoryStream()) { saver.saveObject(data, stream, type); stream.Seek(0, SeekOrigin.Begin); var loaded = saver.restoreObject <SaveTest <int> >(stream, type); Assert.Equal(data.TheProp, loaded.TheProp); } }
public static SaverOutputType TypeFromFile(String file, bool throwOnError = false, SaverOutputType fallback = SaverOutputType.Json) { switch (Path.GetExtension(file).ToLowerInvariant()) { case ".json": return(SaverOutputType.Json); case ".bson": return(SaverOutputType.Bson); case ".xml": return(SaverOutputType.Xml); } if (throwOnError) { throw new InvalidOperationException($"{file} is not a recognized output type for saver"); } return(fallback); }