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):
using (MemoryStream stream = new MemoryStream())
{
var objectToSerialize = new SerializableObject();
using (var serializer = new JsonSerializer(stream, JsonSerializer.SerializeMode.Writer))
{
objectToSerialize.Serialize(serializer);
}
var derializedObject = new SerializableObject();
using (var serializer = new JsonSerializer(stream, JsonSerializer.SerializeMode.Reader))
{
objectToSerialize.derializedObject.Serialize(serializer);
}
}