Skip to main content

Serializer

Serialization tools can be found in namespace Core.Serialization.

In GFF, serialization is done with an abstract Serializer that uses a symetric declaration pattern (symetric read and write). Here is as an example how to describe the serialization of an object:

public class SerializableObject : ISerializable
{
    private int intField;
    private EnumType enumField;
    private SerializedObject child;
    
    public void Serialize(Serializer serializer)
    {
        this.intField = serializer.SerializeValue("Integer", this.intField);
        this.enumField = serializer.SerializeAsValue("Enum", this.enumField);
        this.child = serializer.Serialize("Child", this.child);
    }
}

You can then serialize it in any C# stream using a serializer (for now only JsonSerializer exists):

var objectToSerialize = new SerializableObject();
using (var serializer = new JsonSerializer(stream, JsonSerializer.SerializeMode.Reader))
{
    objectToSerialize.Serialize(serializer);
}