using System.Diagnostics.CodeAnalysis; using System.Text.Json; using Elsa.Alterations.Core.Contracts; using Elsa.Common.Serialization; namespace Elsa.Alterations.Core.Serialization; /// /// A serializer for objects. /// public class AlterationSerializer : ConfigurableSerializer, IAlterationSerializer { /// public AlterationSerializer(IServiceProvider serviceProvider) : base(serviceProvider) { } /// [RequiresUnreferencedCode("The type of the alteration must be known at compile time.")] public string Serialize(IAlteration alteration) { var options = GetOptions(); return JsonSerializer.Serialize(alteration, options); } /// [RequiresUnreferencedCode("The type of the alteration must be known at compile time.")] public string SerializeMany(IEnumerable alterations) { var options = GetOptions(); return JsonSerializer.Serialize(alterations.ToArray(), options); } /// [RequiresUnreferencedCode("The type of the alteration must be known at compile time.")] public IAlteration Deserialize(string json) { var options = GetOptions(); return JsonSerializer.Deserialize(json, options)!; } /// [RequiresUnreferencedCode("The type of the alteration must be known at compile time.")] public IEnumerable DeserializeMany(string json) { var options = GetOptions(); return JsonSerializer.Deserialize(json, options)!; } }