public ShouldSerialize ( object obj, |
||
obj | object | |
memberInfo | ||
return | bool |
protected virtual void SerializeText(object obj, XmlWriter writer, SerializationContext state) { //Nothing to serialize if (TextMember == null) { return; } var memberInfo = TextMember; object val; // Get the value of the field/property to be serialized from the object val = memberInfo.GetValue(obj); // If the valuetype field should be treated as null if it is empty then make val null. if (memberInfo.TreatAsNullIfEmpty) { if (memberInfo.ReturnType.IsValueType) { if (Activator.CreateInstance(memberInfo.ReturnType).Equals(val)) { val = null; } } } // Make sure we aren't serializing recursively. if (state.ShouldSerialize(val, memberInfo)) { try { state.PushCurrentMemberInfo(memberInfo); // Get the TypeSerializerWithSimpleTextSupport var simpleSerializer = memberInfo.GetSerializer(obj) as TypeSerializerWithSimpleTextSupport; // Make sure the serializer supports SimpleText if (simpleSerializer == null) { throw new XmlSerializerException(String.Format(TextResources.NoTextSerializerWithSimpleTextSupport, memberInfo.MemberInfo.Name)); } if (memberInfo.SerializeAsCData) { writer.WriteCData(simpleSerializer.Serialize(val, state)); } else { writer.WriteString(simpleSerializer.Serialize(val, state)); } } finally { state.PopCurrentMemberInfo(); } } }
protected override void SerializeElements(object obj, XmlWriter writer, SerializationContext state) { base.SerializeElements (obj, writer, state); foreach (var item in (System.Collections.IEnumerable)obj) { if (state.ShouldSerialize(item, this.serializationMemberInfo)) { ListItem listItem; if (typeToItemMap.TryGetValue(item.GetType(), out listItem)) { writer.WriteStartElement(listItem.Alias); if (listItem.Attribute != null && listItem.Attribute.SerializeAsValueNode && listItem.Attribute.ValueNodeAttributeName != null && listItem.Serializer is TypeSerializerWithSimpleTextSupport) { writer.WriteAttributeString(listItem.Attribute.ValueNodeAttributeName, ((TypeSerializerWithSimpleTextSupport)listItem.Serializer).Serialize(item, state)); } else { listItem.Serializer.Serialize(item, writer, state); } } else { if (this.dynamicTypeResolver == null) { throw new XmlSerializerException(); } else { var type = this.dynamicTypeResolver.GetType(item); if (type == null) { throw new XmlSerializerException(); } var serializer = cache.GetTypeSerializerBySupportedType(type); writer.WriteStartElement(this.dynamicTypeResolver.GetName(item)); serializer.Serialize(item, writer, state); } } writer.WriteEndElement(); } } }
protected virtual void SerializeAttributes(object obj, XmlWriter writer, SerializationContext state) { foreach (SerializationMemberInfo memberInfo in attributeMembersMap.Values) { object val; // Get the value of the field/property to be serialized from the object val = memberInfo.GetValue(obj); // If the valuetype field should be treated as null if it is empty then make val null. if (memberInfo.TreatAsNullIfEmpty) { if (memberInfo.ReturnType.IsValueType) { if (Activator.CreateInstance(memberInfo.ReturnType).Equals(val)) { val = null; } } } // Make sure we aren't serializing recursively. if (state.ShouldSerialize(val, memberInfo)) { try { state.PushCurrentMemberInfo(memberInfo); // Get the TypeSerializerWithSimpleTextSupport var simpleSerializer = memberInfo.GetSerializer(obj) as TypeSerializerWithSimpleTextSupport; // Make sure the serializer supports SimpleText if (simpleSerializer == null) { throw new XmlSerializerException(String.Format(TextResources.NoTextSerializerWithSimpleTextSupport, memberInfo.MemberInfo.Name)); } // Write the start of the attribute. writer.WriteStartAttribute(memberInfo.SerializedName); // Write the attribute value. writer.WriteString(simpleSerializer.Serialize(val, state)); // Write the end of the attribute writer.WriteEndAttribute(); } finally { state.PopCurrentMemberInfo(); } } } }
protected virtual void SerializeElements(object obj, XmlWriter writer, SerializationContext state) { foreach (SerializationMemberInfo memberInfo in elementMembersMap.Values) { state.PushCurrentMemberInfo(memberInfo); try { object val; val = memberInfo.GetValue(obj); if (memberInfo.TreatAsNullIfEmpty) { if (memberInfo.ReturnType.IsValueType) { if (Activator.CreateInstance(memberInfo.ReturnType).Equals(val)) { val = null; } } } var serializer = memberInfo.GetSerializer(val); var serializerWithSimpleText = serializer as TypeSerializerWithSimpleTextSupport; if (state.ShouldSerialize(val, memberInfo)) { if (memberInfo.Namespace.Length > 0) { // Write start element with namespace writer.WriteStartElement(state.Parameters.Namespaces.GetPrefix(memberInfo.Namespace), memberInfo.SerializedName, memberInfo.Namespace); } else { // Write start element without namespace writer.WriteStartElement(memberInfo.SerializedName); } if (memberInfo.SerializeAsValueNodeAttributeName != null) { if (serializerWithSimpleText == null) { throw new XmlSerializerException(String.Format(TextResources.NoTextSerializerWithSimpleTextSupport, memberInfo.MemberInfo.Name)); } writer.WriteAttributeString(memberInfo.SerializeAsValueNodeAttributeName, serializerWithSimpleText.Serialize(val, state)); } else if (memberInfo.SerializeAsCData) { if (serializerWithSimpleText == null) { throw new XmlSerializerException(String.Format(TextResources.NoTextSerializerWithSimpleTextSupport, memberInfo.MemberInfo.Name)); } writer.WriteCData(serializerWithSimpleText.Serialize(val, state)); } else { memberInfo.GetSerializer(val).Serialize(val, writer, state); } writer.WriteEndElement(); } } finally { state.PopCurrentMemberInfo(); } } }
protected virtual void SerializeText(object obj, XmlWriter writer, SerializationContext state) { //Nothing to serialize if (TextMember == null) return; var memberInfo = TextMember; object val; // Get the value of the field/property to be serialized from the object val = memberInfo.GetValue(obj); // If the valuetype field should be treated as null if it is empty then make val null. if (memberInfo.TreatAsNullIfEmpty) { if (memberInfo.ReturnType.IsValueType) { if (Activator.CreateInstance(memberInfo.ReturnType).Equals(val)) { val = null; } } } // Make sure we aren't serializing recursively. if (state.ShouldSerialize(val,memberInfo)) { try { state.PushCurrentMemberInfo(memberInfo); // Get the TypeSerializerWithSimpleTextSupport var simpleSerializer = memberInfo.GetSerializer(obj) as TypeSerializerWithSimpleTextSupport; // Make sure the serializer supports SimpleText if (simpleSerializer == null) { throw new XmlSerializerException(String.Format(TextResources.NoTextSerializerWithSimpleTextSupport, memberInfo.MemberInfo.Name)); } if (memberInfo.SerializeAsCData) { writer.WriteCData(simpleSerializer.Serialize(val, state)); } else { writer.WriteString(simpleSerializer.Serialize(val, state)); } } finally { state.PopCurrentMemberInfo(); } } }
protected virtual void SerializeElements(object obj, XmlWriter writer, SerializationContext state) { foreach (SerializationMemberInfo memberInfo in elementMembersMap.Values) { state.PushCurrentMemberInfo(memberInfo); try { object val; val = memberInfo.GetValue(obj); if (memberInfo.TreatAsNullIfEmpty) { if (memberInfo.ReturnType.IsValueType) { if (Activator.CreateInstance(memberInfo.ReturnType).Equals(val)) { val = null; } } } var serializer = memberInfo.GetSerializer(val); var serializerWithSimpleText = serializer as TypeSerializerWithSimpleTextSupport; if (state.ShouldSerialize(val,memberInfo)) { if (memberInfo.Namespace.Length > 0) { // Write start element with namespace writer.WriteStartElement(state.Parameters.Namespaces.GetPrefix(memberInfo.Namespace), memberInfo.SerializedName, memberInfo.Namespace); } else { // Write start element without namespace writer.WriteStartElement(memberInfo.SerializedName); } if (memberInfo.SerializeAsValueNodeAttributeName != null) { if (serializerWithSimpleText == null) { throw new XmlSerializerException(String.Format(TextResources.NoTextSerializerWithSimpleTextSupport, memberInfo.MemberInfo.Name)); } writer.WriteAttributeString(memberInfo.SerializeAsValueNodeAttributeName, serializerWithSimpleText.Serialize(val, state)); } else if (memberInfo.SerializeAsCData) { if (serializerWithSimpleText == null) { throw new XmlSerializerException(String.Format(TextResources.NoTextSerializerWithSimpleTextSupport, memberInfo.MemberInfo.Name)); } writer.WriteCData(serializerWithSimpleText.Serialize(val, state)); } else { memberInfo.GetSerializer(val).Serialize(val, writer, state); } writer.WriteEndElement(); } } finally { state.PopCurrentMemberInfo(); } } }
protected virtual void SerializeAttributes(object obj, XmlWriter writer, SerializationContext state) { foreach (SerializationMemberInfo memberInfo in attributeMembersMap.Values) { object val; // Get the value of the field/property to be serialized from the object val = memberInfo.GetValue(obj); // If the valuetype field should be treated as null if it is empty then make val null. if (memberInfo.TreatAsNullIfEmpty) { if (memberInfo.ReturnType.IsValueType) { if (Activator.CreateInstance(memberInfo.ReturnType).Equals(val)) { val = null; } } } // Make sure we aren't serializing recursively. if (state.ShouldSerialize(val,memberInfo)) { try { state.PushCurrentMemberInfo(memberInfo); // Get the TypeSerializerWithSimpleTextSupport var simpleSerializer = memberInfo.GetSerializer(obj) as TypeSerializerWithSimpleTextSupport; // Make sure the serializer supports SimpleText if (simpleSerializer == null) { throw new XmlSerializerException(String.Format(TextResources.NoTextSerializerWithSimpleTextSupport, memberInfo.MemberInfo.Name)); } // Write the start of the attribute. writer.WriteStartAttribute(memberInfo.SerializedName); // Write the attribute value. writer.WriteString(simpleSerializer.Serialize(val, state)); // Write the end of the attribute writer.WriteEndAttribute(); } finally { state.PopCurrentMemberInfo(); } } } }
protected override void SerializeElements(object obj, XmlWriter writer, SerializationContext state) { base.SerializeElements (obj, writer, state); foreach (var item in (System.Collections.IEnumerable)obj) { if (state.ShouldSerialize(item, this.serializationMemberInfo)) { ListItem listItem; if (TryGetItemByType(item.GetType(), out listItem)) { writer.WriteStartElement(listItem.Alias); if (listItem.Attribute != null && listItem.Attribute.SerializeAsValueNode && listItem.Attribute.ValueNodeAttributeName != null && listItem.Serializer is TypeSerializerWithSimpleTextSupport) { writer.WriteAttributeString(listItem.Attribute.ValueNodeAttributeName, ((TypeSerializerWithSimpleTextSupport)listItem.Serializer).Serialize(item, state)); } else { listItem.Serializer.Serialize(item, writer, state); } } else { if (this.dynamicTypeResolver == null) { throw new XmlSerializerException(); } else { var type = this.dynamicTypeResolver.GetType(item); if (type == null) { throw new XmlSerializerException(); } var serializer = cache.GetTypeSerializerBySupportedType(type); writer.WriteStartElement(this.dynamicTypeResolver.GetName(item)); serializer.Serialize(item, writer, state); } } writer.WriteEndElement(); } } }