public static void Save(object obj, string path, Format format) { path = GetPath(path); var tempPath = Path.Combine(Path.GetDirectoryName(path), "$" + Path.GetFileName(path) + ".tmp"); #if BSON if (format == Format.Bson) { throw Sanity.NotImplementedException(); } #endif #if PROTOBUF if (format == Format.Protobuf) { path = GetPath(path); using (var stream = File.Open(tempPath, FileMode.Create, FileAccess.Write, FileShare.Delete)) { ProtobufSerializeOfTMethod.MakeGenericMethod(obj.GetType()).Invoke(null, new[] { stream, obj }); } File.Delete(path); File.Move(tempPath, path); return; } #endif { path = GetPath(path); using (var stream = File.Open(tempPath, FileMode.Create, FileAccess.Write, FileShare.Delete)) using (var sw = new StreamWriter(stream, Encoding.UTF8)) { var js = new JsonSerializer(); #if !STANDALONE js.AddAwdeeConverters(); #endif js.Formatting = format == Format.CompactJson ? Formatting.None : Formatting.Indented; js.Serialize(sw, obj); } File.Delete(path); File.Move(tempPath, path); return; } }
internal static WebFile FromDbValue(WebFile file, string content, TypeBase type) { /*if (url == null) return null; * var u = url.AsUri(); * var file = * type == TypeBase.WebImage ? WebImage.FromUrl(u) : * type == TypeBase.WebAudio ? WebAudio.FromUrl(u) : * type == TypeBase.WebVideo ? WebVideo.FromUrl(u) : * WebFile.FromUrl(u); */ if (content != null) { var serializer = new JsonSerializer(); serializer.AddAwdeeConverters(); using (var sr = new StringReader(content)) using (var jr = Utils.CreateJsonReader(sr)) { serializer.Deserialize(jr, type.NativeType); } } return(file); }