Exemplo n.º 1
0
        public override object FromXml(object parent, PropertyDescriptor metadata, Type entityType, XmlReader reader, XmlSerializerContext context)
        {
            string elementName = reader.LocalName;

            if (this.MustExcludeElement(elementName, context) || !this.MustIncludeElement(elementName, context))
            {
                reader.Skip();
                return(null);
            }

            try
            {
                context.Stack.InstanciesSequence.Push(parent);
                return(this.DoFromXml(parent, metadata, entityType, reader, context));
            }
            catch (Exception ex)
            {
                throw XmlDataSerializerExceptionFactory.CreateDeserializationException(elementName, parent, metadata, entityType, context, ex);
            }
            finally
            {
                context.Stack.InstanciesSequence.Pop();
            }
        }
Exemplo n.º 2
0
        public virtual object FromXml(object parent, PropertyDescriptor metadata, Type entityType, XmlReader reader, XmlSerializerContext context)
        {
            string elementName = reader.LocalName;

            if (this.MustExcludeElement(elementName, context) || !this.MustIncludeElement(elementName, context))
            {
                reader.Skip();
                return(null);
            }

            try
            {
                context.Stack.InstanciesSequence.Push(parent);

                //me fijo si esta referenciando a otro objeto
                long id = this.GetReferenceId(reader, context);
                if (id == 0)
                {
                    object output = this.DoFromXml(parent, metadata, entityType, reader, context);
                    return(output);
                }
                else
                {
                    reader.Skip();
                    return(this.GetInstanceByReferenceId(id, context));
                }
            }
            catch (Exception ex)
            {
                throw XmlDataSerializerExceptionFactory.CreateDeserializationException(elementName, parent, metadata, entityType, context, ex);
            }
            finally
            {
                context.Stack.InstanciesSequence.Pop();
            }
        }