mirror of
https://github.com/cyanfish/naps2.git
synced 2024-09-21 12:49:43 +03:00
45 lines
1.5 KiB
C#
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);
|
|
} |