MessagePackSerializer.cs 845 B

1234567891011121314151617181920212223242526272829303132
  1. using MessagePack;
  2. using MessagePack.Resolvers;
  3. namespace EasyMQ
  4. {
  5. public class MessagePackSerializer : ISerializer
  6. {
  7. private MessagePackSerializerOptions options;
  8. public MessagePackSerializer()
  9. {
  10. options = TypelessContractlessStandardResolver.Options.WithOmitAssemblyVersion(true);
  11. }
  12. public T Deserialize<T>(ReadOnlyMemory<byte> bytes)
  13. {
  14. try
  15. {
  16. return MessagePack.MessagePackSerializer.Deserialize<T>(bytes, options);
  17. }
  18. catch
  19. {
  20. return Activator.CreateInstance<T>();
  21. }
  22. }
  23. public byte[] Serialize<T>(ref T value)
  24. {
  25. var result = MessagePack.MessagePackSerializer.Serialize(value, options);
  26. return result;
  27. }
  28. }
  29. }