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)!;
}
}