FreeRedis
FreeRedis copied to clipboard
使用MessagePack或MemoryPack作为序列化器失败
使用这两个序列化器需要分别在目标类上加上注解[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<T>(string val) => MessagePackSerializer.Deserialize<T>(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);
}
为什么不直接用泛型作为序列化器呢?而是要转为object
MessagePack 我是这么玩的,目标类不需要注解
