/// <summary>
/// Writes the object using reflection.
///
/// REMARK: this method is not thread-safe!
/// </summary>
/// <param name="objectWriter">Object writer's object</param>
/// <param name="o">Object to serialize</param>
internal static void WriteObjectUsingReflection(ObjectWriter objectWriter, object o)
{
Helpers.InvokeAttribute(typeof(PreSerializationAttribute), o);
if (!objectWriter.WriteSpecialObject(o, !objectWriter.treatCollectionAsUserObject))
{
objectWriter.WriteObjectsFields(o, o.GetType());
}
}