public virtual object GetValueFromString(ValueTypePropertyDescriptor metadata, string attValue, Type type, XmlSerializerContext context) { try { if (string.IsNullOrEmpty(attValue)) { return(this.GetDefaultValue(metadata, type, context)); } else { return(this.DoGetValueFromString(metadata, attValue, type, context)); } } catch (Exception ex) { throw XmlDataSerializerExceptionFactory.CreateCanNotGetParseValueTypeException(metadata, attValue, type, context, ex); } }
public virtual void ToXml(object parent, PropertyDescriptor metadata, object entity, XmlTextWriter writer, XmlSerializerContext context) { try { if (entity != null) { //verifico si existe una referencia circular if (!context.Settings.UniqueSerializationForInstance && context.Stack.ExistInSequence(entity)) { context.Stack.InstanciesSequence.Push(entity); throw XmlDataSerializerExceptionFactory.CreateCircularReferenceException(parent, metadata, entity, context); } else { context.Stack.InstanciesSequence.Push(entity); } if (!this.MustExcludeSerializationProperty(parent, metadata, entity, context)) { this.DoToXml(parent, metadata, entity, writer, context); } } else { //si es nulo verifico si se puede escribir valores nulos if (context.Settings.WriteNullValues) { this.DoToNullValueXml(parent, metadata, writer, context); } } } catch (Exception ex) { throw XmlDataSerializerExceptionFactory.CreateSerializationException(parent, metadata, entity, context, ex); } finally { if (entity != null) { context.Stack.InstanciesSequence.Pop(); } } }
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(); } }
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(); } }