自定义序列化只需要实现自己的 IDataSerializer 就可以了, 用自己的序列化实现 IDataSerializer 接口, 并注入服务即可 (注: 序列化器一个生命周期应当是 Singleton ).
Binary 序列化的 BinaryDataSerializer 示例代码:
- public class BinaryDataSerializer : IDataSerializer
- {
- private readonly BinaryFormatter _binaryFormatter = new BinaryFormatter();
- public T Deserializer(byte[] bytes)
- {
- using (var memoryStream = new MemoryStream(bytes))
- {
- return (T)_binaryFormatter.Deserialize(memoryStream);
- }
- }
- public byte[] Serialize(T obj)
- {
- using (var memoryStream = new MemoryStream())
- {
- _binaryFormatter.Serialize(memoryStream, obj);
- return memoryStream.ToArray();
- }
- }
- }
- IServiceCollection services = new ServiceCollection();
- services.AddRedisConfig(options => { });
- // custom serializer
- services.AddSingleton();
- // set resolver
- DependencyResolver.SetDependencyResolver(services);
WeihanLi.Common 中实现了三个序列化器, BinaryDataSerializer/XmlDataSerializer/JsonDataSerializer, 可以参考 https://github.com/WeihanLi/WeihanLi.Common/blob/dev/src/WeihanLi.Common/Helpers/IDataSerializer.cs
来源: https://www.2cto.com/kf/201904/803772.html