protected override void WriteValue(XmlWriter writer, object value) { IDictionary dictionary = (IDictionary)value; foreach (object key in dictionary.Keys) { object target = dictionary[key]; // any way to refactor code block? ReflectorTypeAttribute typeAttribute = ReflectorTypeAttribute.GetAttribute(target); if (typeAttribute == null) { writer.WriteStartElement(elementName); writer.WriteAttributeString(attribute.Key, key.ToString()); writer.WriteString(target.ToString()); writer.WriteEndElement(); } else { writer.WriteStartElement(typeAttribute.Name); writer.WriteAttributeString(attribute.Key, key.ToString()); XmlTypeSerialiser serialiser = (XmlTypeSerialiser)typeAttribute.CreateSerialiser(target.GetType()); serialiser.WriteMembers(writer, target); writer.WriteEndElement(); } } }
protected virtual void WriteValue(XmlWriter writer, object value) { ReflectorTypeAttribute attribute = ReflectorTypeAttribute.GetAttribute(value); if (attribute == null) { writer.WriteString(value.ToString()); } else { XmlTypeSerialiser serialiser = (XmlTypeSerialiser)attribute.CreateSerialiser(value.GetType()); serialiser.WriteMembers(writer, value); } }