How do you implement a custom serialization?
CUSTOM SERIALIZATION implementation
public class A: ISerializable
{
    private int a;
    protected A(SerializationInfo si, StreamingContext sc)
    {
        this.a = serializationInfo.GetInt32("a");
    }
    public void ISerializable.GetObjectData(SerializationInfo si, StreamingContext sc)
    {
        si.AddValue("a", this.a);
    }
}