MapObject() public method

Adding to the marshalledObjects
public MapObject ( Object obj ) : void
obj Object
return void
Ejemplo n.º 1
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="obj"></param>
        /// <param name="rootObjectFieldDescriptor"></param>
        /// <param name="binaryWriter"></param>
        /// <param name="translationContext"></param>
        private void Serialize(object obj, FieldDescriptor rootObjectFieldDescriptor, BinaryWriter binaryWriter,
            TranslationContext translationContext)
        {
            if (AlreadySerialized(obj, translationContext))
            {
                WriteSimplRef(obj, rootObjectFieldDescriptor, binaryWriter);
                return;
            }

            translationContext.MapObject(obj);

            SerializationPreHook(obj, translationContext);
            ClassDescriptor rootObjectClassDescriptor = GetClassDescriptor(obj);

            MemoryStream bufferMemoryStream = new MemoryStream();
            BinaryWriter outputBuffer = new BinaryWriter(bufferMemoryStream);

            IEnumerable<FieldDescriptor> allFieldDescriptors = GetClassDescriptor(obj).AllFieldDescriptors;

            SerializeFields(obj, outputBuffer, translationContext, allFieldDescriptors.ToList());
            WriteHeader(binaryWriter, bufferMemoryStream, rootObjectFieldDescriptor.TlvId);
            SerializationPostHook(obj, translationContext);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="obj"></param>
        /// <param name="rootObjectFieldDescriptor"></param>
        /// <param name="textWriter"></param>
        /// <param name="translationContext"></param>
        /// <param name="withTag"></param>
        private void Serialize(object obj, FieldDescriptor rootObjectFieldDescriptor, TextWriter textWriter, TranslationContext translationContext, bool withTag)
        {
            if (obj == null)
                return;

            if (AlreadySerialized(obj, translationContext))
            {
                WriteSimplRef(obj, rootObjectFieldDescriptor, textWriter, withTag, translationContext);
                return;
            }

            translationContext.MapObject(obj);

            SerializationPreHook(obj, translationContext);

            WriteObjectStart(rootObjectFieldDescriptor, textWriter, withTag);

            ClassDescriptor cd = GetClassDescriptor(obj);

            SerializeFields(obj, textWriter, translationContext, cd);

            WriteClose(textWriter);

            SerializationPostHook(obj, translationContext);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="obj"></param>
        /// <param name="rootObjectFieldDescriptor"></param>
        /// <param name="textWriter"></param>
        /// <param name="translationContext"></param>
        private void Serialize(object obj, FieldDescriptor rootObjectFieldDescriptor, TextWriter textWriter, TranslationContext translationContext)
        {
            if (obj == null)
                return;

            if (AlreadySerialized(obj, translationContext))
            {
                WriteSimplRef(obj, rootObjectFieldDescriptor, textWriter, translationContext);
                return;
            }

            translationContext.MapObject(obj);

            SerializationPreHook(obj, translationContext);

            WriteObjectStart(rootObjectFieldDescriptor, textWriter);

            ClassDescriptor rootObjectClassDescriptor = GetClassDescriptor(obj);
            SerializedAttributes(obj, textWriter, translationContext, rootObjectClassDescriptor);

            List<FieldDescriptor> elementFieldDescriptors = rootObjectClassDescriptor.ElementFieldDescriptors;

            Boolean hasXmlText = rootObjectClassDescriptor.HasScalarTextField;
            Boolean hasElements = elementFieldDescriptors.Count > 0;

            if (!hasElements && !hasXmlText)
            {
                WriteCompleteClose(textWriter);
            }
            else
            {
                WriteClose(textWriter);

                if (hasXmlText)
                {
                    WriteValueAsText(obj, rootObjectClassDescriptor.ScalarTextFD, textWriter);
                }

                SerializeFields(obj, textWriter, translationContext, elementFieldDescriptors);

                WriteObjectClose(rootObjectFieldDescriptor, textWriter);
            }
        }