using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
namespace Cobilas.IO.Serialization.Binary {
/// Base sketch object.
[Serializable]
public abstract class ScratchObject {
/// Draft name.
public abstract string Name { get; }
/// Downloads draft object to a file.
/// Scratch object.
/// Path of the file where the object will be downloaded.
public static void UnloadScratchObject(ScratchObject scratch, string filePath) {
BinaryFormatter formatter = new BinaryFormatter();
using (FileStream stream = File.Create(filePath))
formatter.Serialize(stream, scratch);
}
/// Downloads draft object to a file.
/// Scratch object.
/// Path of the directory where the file will be created.
/// File name.
/// File extension.
public static void UnloadScratchObject(ScratchObject scratch, string folderPath, string name, string extension = "sobj")
=> UnloadScratchObject(scratch, Path.ChangeExtension(Path.Combine(folderPath, name), extension));
/// Downloads draft object to a file.
/// Scratch object.
/// Path of the directory where the file will be created.
/// File extension.
public static void UnloadScratchObject(ScratchObject scratch, string folderPath, string extension = "sobj")
=> UnloadScratchObject(scratch, folderPath, scratch.Name, extension);
/// Loads an object from a file.
/// File path.
public static ScratchObject LoadScratchObject(string filePath) {
BinaryFormatter formatter = new BinaryFormatter();
using (FileStream stream = File.OpenRead(filePath))
return (ScratchObject)formatter.Deserialize(stream);
}
}
}