MessagePack.FSharpExtensions is a MessagePack-CSharp extension library for F#.
openSystemopenSystem.BuffersopenMessagePackopenMessagePack.ResolversopenMessagePack.FSharp[<MessagePackObject>]typeUnionSample=| Foo ofXYZ:int| Bar ofOPQ:stringlistletconvertAsMemory<'T>options (value:'T)=letmemory= ReadOnlyMemory(MessagePackSerializer.Serialize(value, options))
MessagePackSerializer.Deserialize<'T>(memory, options)letconvertAsSequence<'T>options (value:'T)=letsequence= ReadOnlySequence(MessagePackSerializer.Serialize(value, options))
MessagePackSerializer.Deserialize<'T>(& sequence, options)letdump=function| Foo x ->
printfn "%d" x
| Bar xs ->
printfn "%A" xs
letresolver=
Resolvers.CompositeResolver.Create(
FSharpResolver.Instance,
StandardResolver.Instance
)letoptions= MessagePackSerializerOptions.Standard.WithResolver(resolver)
Foo 999|> convertAsMemory options
|> dump
Bar ["example"]|> convertAsSequence options
|> dump- 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.