using MessagePack; using MessagePack.Resolvers; namespace DysonNetwork.Shared.Cache; public class MessagePackCacheSerializer(MessagePackSerializerOptions? options = null) : ICacheSerializer { private readonly MessagePackSerializerOptions _options = options ?? MessagePackSerializerOptions.Standard .WithResolver(ContractlessStandardResolver.Instance) .WithCompression(MessagePackCompression.Lz4BlockArray) .WithSecurity(MessagePackSecurity.UntrustedData) .WithOmitAssemblyVersion(true); public string Serialize(T value) { var bytes = MessagePackSerializer.Serialize(value!, _options); return Convert.ToBase64String(bytes); } public T? Deserialize(string data) { var bytes = Convert.FromBase64String(data); return MessagePackSerializer.Deserialize(bytes, _options); } }