/// <summary> /// Serialize a IBinarySerializable object. /// </summary> /// <param name="buffer">The buffer where to serialize the data.</param> /// <param name="start">The start index in the buffer where to serialize the data.</param> /// <param name="value">The object to serialize.</param> /// <returns>The number of serialized bytes.</returns> public uint ToBytes(ref Buffer buffer, uint start, IBinarySerializable value) { uint written; CheckSerializationParameters(buffer, start); if (value != null) { Type type = value.GetType(); CheckDefaultConstructor(type); written = ToBytes(ref buffer, start, type); written += value.ToBytes(this, ref buffer, start + written); } else { written = ToBytes(ref buffer, start, (Type)null); } return(written); }