diff --git a/framework/src/Volo.Abp.Serialization/Volo/Abp/Serialization/Binary/BinarySerializationHelper.cs b/framework/src/Volo.Abp.Serialization/Volo/Abp/Serialization/Binary/BinarySerializationHelper.cs deleted file mode 100644 index 31a9ff280b..0000000000 --- a/framework/src/Volo.Abp.Serialization/Volo/Abp/Serialization/Binary/BinarySerializationHelper.cs +++ /dev/null @@ -1,126 +0,0 @@ -using System; -using System.IO; -using System.Runtime.Serialization; -using System.Runtime.Serialization.Formatters.Binary; - -namespace Volo.Abp.Serialization.Binary -{ - /// - /// This class is used to simplify serialization/deserialization operations. - /// Uses .NET binary serialization. - /// - public static class BinarySerializationHelper - { - /// - /// Serializes an object and returns as a byte array. - /// - /// object to be serialized - /// bytes of object - public static byte[] Serialize(object obj) - { - using (var memoryStream = new MemoryStream()) - { - Serialize(obj, memoryStream); - return memoryStream.ToArray(); - } - } - - /// - /// Serializes an object into a stream. - /// - /// object to be serialized - /// Stream to serialize in - /// bytes of object - public static void Serialize(object obj, Stream stream) - { - CreateBinaryFormatter().Serialize(stream, obj); - } - - /// - /// Deserializes an object from given byte array. - /// - /// The byte array that contains object - /// deserialized object - public static object Deserialize(byte[] bytes) - { - using (var memoryStream = new MemoryStream(bytes)) - { - return Deserialize(memoryStream); - } - } - - /// - /// Deserializes an object from given stream. - /// - /// The stream that contains object - /// deserialized object - public static object Deserialize(Stream stream) - { - return CreateBinaryFormatter().Deserialize(stream); - } - - /// - /// Deserializes an object from given byte array. - /// Difference from is that; this method can also deserialize - /// types that are defined in dynamically loaded assemblies (like PlugIns). - /// - /// The byte array that contains object - /// deserialized object - public static object DeserializeExtended(byte[] bytes) - { - using (var memoryStream = new MemoryStream(bytes)) - { - return CreateBinaryFormatter(true).Deserialize(memoryStream); - } - } - - /// - /// Deserializes an object from given stream. - /// Difference from is that; this method can also deserialize - /// types that are defined in dynamically loaded assemblies (like PlugIns). - /// - /// The stream that contains object - /// deserialized object - public static object DeserializeExtended(Stream stream) - { - return CreateBinaryFormatter(true).Deserialize(stream); - } - - private static BinaryFormatter CreateBinaryFormatter(bool extended = false) - { - if (extended) - { - return new BinaryFormatter - { - //TODO: AssemblyFormat = System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple, - Binder = new ExtendedSerializationBinder() - }; - } - else - { - return new BinaryFormatter(); - } - } - - /// - /// This class is used in deserializing to allow deserializing objects that are defined - /// in assemlies that are load in runtime (like PlugIns). - /// - private sealed class ExtendedSerializationBinder : SerializationBinder - { - public override Type BindToType(string assemblyName, string typeName) - { - var toAssemblyName = assemblyName.Split(',')[0]; - foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies()) - { - if (assembly.FullName.Split(',')[0] == toAssemblyName) - { - return assembly.GetType(typeName); - } - } - - return Type.GetType(string.Format("{0}, {1}", typeName, assemblyName)); - } - } - } -} diff --git a/framework/src/Volo.Abp.Serialization/Volo/Abp/Serialization/DefaultObjectSerializer.cs b/framework/src/Volo.Abp.Serialization/Volo/Abp/Serialization/DefaultObjectSerializer.cs index 009fab9fb2..f016fe9773 100644 --- a/framework/src/Volo.Abp.Serialization/Volo/Abp/Serialization/DefaultObjectSerializer.cs +++ b/framework/src/Volo.Abp.Serialization/Volo/Abp/Serialization/DefaultObjectSerializer.cs @@ -1,8 +1,8 @@ using System; +using System.Text.Json; using JetBrains.Annotations; using Microsoft.Extensions.DependencyInjection; using Volo.Abp.DependencyInjection; -using Volo.Abp.Serialization.Binary; namespace Volo.Abp.Serialization { @@ -58,12 +58,12 @@ namespace Volo.Abp.Serialization protected virtual byte[] AutoSerialize(T obj) { - return BinarySerializationHelper.Serialize(obj); + return JsonSerializer.SerializeToUtf8Bytes(obj); } protected virtual T AutoDeserialize(byte[] bytes) { - return (T) BinarySerializationHelper.DeserializeExtended(bytes); + return JsonSerializer.Deserialize(bytes); } } -} \ No newline at end of file +} diff --git a/framework/test/Volo.Abp.Serialization.Tests/Volo/Abp/Serialization/Objects/CarSerializer.cs b/framework/test/Volo.Abp.Serialization.Tests/Volo/Abp/Serialization/Objects/CarSerializer.cs index 4c09a3ca93..f99cc9e1f9 100644 --- a/framework/test/Volo.Abp.Serialization.Tests/Volo/Abp/Serialization/Objects/CarSerializer.cs +++ b/framework/test/Volo.Abp.Serialization.Tests/Volo/Abp/Serialization/Objects/CarSerializer.cs @@ -1,5 +1,6 @@ -using Volo.Abp.DependencyInjection; -using Volo.Abp.Serialization.Binary; +using System.Text.Json; +using Volo.Abp.DependencyInjection; + namespace Volo.Abp.Serialization.Objects { @@ -8,14 +9,14 @@ namespace Volo.Abp.Serialization.Objects public byte[] Serialize(Car obj) { obj.Name += "-serialized"; - return BinarySerializationHelper.Serialize(obj); + return JsonSerializer.SerializeToUtf8Bytes(obj); } public Car Deserialize(byte[] bytes) { - var car = (Car)BinarySerializationHelper.DeserializeExtended(bytes); + var car = JsonSerializer.Deserialize(bytes); car.Name += "-deserialized"; return car; } } -} \ No newline at end of file +}