/// <summary>
/// Serialiaztion of objects
/// </summary>
/// <param name="obj">Object to serialize</param>
/// <param name="abstractHessianOutput">HessianOutput - Instance</param>
public override void WriteObject(object obj, AbstractHessianOutput abstractHessianOutput)
{
if (abstractHessianOutput.AddRef(obj))
{
return;
}
Type type = obj.GetType();
string typeName = type.FullName;
object[] customAttributes = type.GetCustomAttributes(typeof(CTypeNameAttribute), false);
if (customAttributes.Length > 0)
{
typeName = ((CTypeNameAttribute)customAttributes[0]).Name;
}
abstractHessianOutput.WriteMapBegin(typeName);
List <Object> serFields = GetSerializableFieldList();
for (int i = 0; i < serFields.Count; i++)
{
FieldInfo field = (FieldInfo)serFields[i];
abstractHessianOutput.WriteString(field.Name);
abstractHessianOutput.WriteObject(field.GetValue(obj));
}
abstractHessianOutput.WriteMapEnd();
}