naps2/NAPS2.Sdk/Serialization/SerializerExtensions.cs
2021-12-17 12:18:20 -08:00

45 lines
1.5 KiB
C#

using System.Text;
namespace NAPS2.Serialization;
public static class SerializerExtensions
{
public static void SerializeToFile<T>(this ISerializer<T> serializer, string path, T obj)
{
using var stream = File.Open(path, FileMode.Create);
serializer.Serialize(stream, obj);
}
public static byte[] SerializeToBytes<T>(this ISerializer<T> serializer, T obj)
{
using var stream = new MemoryStream();
serializer.Serialize(stream, obj);
return stream.ToArray();
}
public static string SerializeToString<T>(this ISerializer<T> serializer, T obj)
{
return Encoding.UTF8.GetString(serializer.SerializeToBytes(obj));
}
public static T DeserializeFromFile<T>(this ISerializer<T> serializer, string path)
{
using var stream = File.Open(path, FileMode.Open);
return serializer.Deserialize(stream);
}
public static T DeserializeFromBytes<T>(this ISerializer<T> serializer, byte[] bytes)
{
using var stream = new MemoryStream(bytes);
return serializer.Deserialize(stream);
}
public static T DeserializeFromString<T>(this ISerializer<T> serializer, string str)
{
return serializer.DeserializeFromBytes(Encoding.UTF8.GetBytes(str));
}
public static string ToXml<T>(this T obj) => new XmlSerializer<T>().SerializeToString(obj);
public static T FromXml<T>(this string xml) => new XmlSerializer<T>().DeserializeFromString(xml);
}