/// <summary> /// /// </summary> /// <param name="obj"></param> /// <param name="writer"></param> /// <param name="state"></param> public override void Serialize(object obj, XmlWriter writer, SerializationState state) { TypeSerializerWithSimpleTextSupport simpleSerializer; state.SerializationStart(obj); try { // Serialize attributes... foreach (LightSerializationMember smi in m_AttributeMembersMap.Values) { object val; val = smi.GetValue(obj); if (smi.XmlTreatAsNullIfEmpty) { if (smi.LogicalType.IsValueType) { if (Activator.CreateInstance(smi.LogicalType).Equals(obj)) { val = null; } } } if (state.ShouldSerialize(val)) { simpleSerializer = (TypeSerializerWithSimpleTextSupport)smi.Serializer; writer.WriteStartAttribute(smi.SerializedName, ""); writer.WriteString(simpleSerializer.Serialize(val, state)); writer.WriteEndAttribute(); } } // Serialize elements... foreach (LightSerializationMember smi in m_ElementMembersMap.Values) { object val; val = smi.GetValue(obj); if (smi.XmlTreatAsNullIfEmpty) { if (smi.LogicalType.IsValueType) { if (Activator.CreateInstance(smi.LogicalType).Equals(val)) { val = null; } } } if (smi.SerializeAsCData) { simpleSerializer = smi.Serializer as TypeSerializerWithSimpleTextSupport; } else { simpleSerializer = null; } if (state.ShouldSerialize(val)) { writer.WriteStartElement(smi.SerializedName, ""); if (simpleSerializer != null) { writer.WriteCData(simpleSerializer.Serialize(val, state)); } else { smi.Serializer.Serialize(val, writer, state); } writer.WriteEndElement(); } } } finally { state.SerializationEnd(obj); } }
/// <summary> /// /// </summary> /// <param name="obj"></param> /// <param name="writer"></param> /// <param name="state"></param> public override void Serialize(object obj, XmlWriter writer, SerializationState state) { TypeSerializerWithSimpleTextSupport simpleSerializer; state.SerializationStart(obj); try { // Serialize attributes... foreach (SerializationMemberInfo smi in m_AttributeMembersMap.Values) { object val; val = smi.GetValue(obj); if (smi.TreatAsNullIfEmpty) { if (smi.LogicalType.IsValueType) { if (Activator.CreateInstance(smi.LogicalType).Equals(obj)) { val = null; } } } if (state.ShouldSerialize(val)) { simpleSerializer = (TypeSerializerWithSimpleTextSupport)smi.Serializer; writer.WriteStartAttribute(smi.SerializedName, ""); writer.WriteString(simpleSerializer.Serialize(val, state)); writer.WriteEndAttribute(); } } // Serialize elements... foreach (SerializationMemberInfo smi in m_ElementMembersMap.Values) { object val; val = smi.GetValue(obj); if (smi.TreatAsNullIfEmpty) { if (smi.LogicalType.IsValueType) { if (Activator.CreateInstance(smi.LogicalType).Equals(val)) { val = null; } } } simpleSerializer = smi.Serializer as TypeSerializerWithSimpleTextSupport; if (state.ShouldSerialize(val)) { if (smi.Namespace.Length > 0) { writer.WriteStartElement(state.Parameters.Namespaces.GetPrefix(smi.Namespace), smi.SerializedName, smi.Namespace); } else { writer.WriteStartElement(smi.SerializedName, ""); } if (smi.SerializeAsValueNodeAttributeName != null) { writer.WriteAttributeString(smi.SerializeAsValueNodeAttributeName, val.ToString()); } else if (smi.SerializeAsCData) { writer.WriteCData(simpleSerializer.Serialize(val, state)); } else { smi.Serializer.Serialize(val, writer, state); } writer.WriteEndElement(); } } } finally { state.SerializationEnd(obj); } }