使用MessagePack或MemoryPack作为序列化器失败
wapco opened this issue · 2 comments
wapco commented
使用这两个序列化器需要分别在目标类上加上注解[MessagePackObject] [MemoryPackable],而freeredis的序列化把对象都转为object,object是无法加上这两个注解,导致序列化失败。
Exception: MessagePack.MessagePackSerializationException: Failed to serialize System.Object value.
Exception: MemoryPack.MemoryPackSerializationException: System.Object is not registered in this provider.
代码:
public class MessagePackRedisSerializer : IRedisSerializer
{
public T Deserialize(string val) => MessagePackSerializer.Deserialize(Encoding.UTF8.GetBytes(val));
public object Deserialize(string val, Type type) => MessagePackSerializer.Deserialize(type, Encoding.UTF8.GetBytes(val));
public byte[] Serialize<T>(T value) => MessagePackSerializer.Serialize(value);
}
wapco commented
为什么不直接用泛型作为序列化器呢?而是要转为object
alvinhao666 commented