项目作者: pocketberserker

项目描述 :
MessagePack Extensions for F#. / msgpack.org[F#]
高级语言: C#
项目地址: git://github.com/pocketberserker/MessagePack.FSharpExtensions.git
创建时间: 2017-03-14T02:36:11Z
项目社区:https://github.com/pocketberserker/MessagePack.FSharpExtensions

开源协议:MIT License

下载


MessagePack.FSharpExtensions

NuGet Status

MessagePack.FSharpExtensions is a MessagePack-CSharp extension library for F#.

Usage

  1. open System
  2. open System.Buffers
  3. open MessagePack
  4. open MessagePack.Resolvers
  5. open MessagePack.FSharp
  6. [<MessagePackObject>]
  7. type UnionSample =
  8. | Foo of XYZ : int
  9. | Bar of OPQ : string list
  10. let convertAsMemory<'T> options (value: 'T) =
  11. let memory = ReadOnlyMemory(MessagePackSerializer.Serialize(value, options))
  12. MessagePackSerializer.Deserialize<'T>(memory, options)
  13. let convertAsSequence<'T> options (value: 'T) =
  14. let sequence = ReadOnlySequence(MessagePackSerializer.Serialize(value, options))
  15. MessagePackSerializer.Deserialize<'T>(& sequence, options)
  16. let dump = function
  17. | Foo x ->
  18. printfn "%d" x
  19. | Bar xs ->
  20. printfn "%A" xs
  21. let resolver =
  22. Resolvers.CompositeResolver.Create(
  23. FSharpResolver.Instance,
  24. StandardResolver.Instance
  25. )
  26. let options = MessagePackSerializerOptions.Standard.WithResolver(resolver)
  27. Foo 999
  28. |> convertAsMemory options
  29. |> dump
  30. Bar ["example"]
  31. |> convertAsSequence options
  32. |> dump

Supported types

  • option
  • voption
  • list
  • map
  • set
  • Discriminated Union
  • Struct Discriminated Union

Records, Struct Records and Anonymous Records are serialized and deserialized using DynamicObjectResolver in MessagePack-CSharp.