public Serialize ( |
||
type | ||
graph | object | |
return | void |
public override void SerializeNonReference(object graph, XmlFormatterSerializer serializer) { foreach (object o in (IEnumerable)graph) { serializer.WriteStartElement(element_qname.Name, XmlName.Namespace, CurrentNamespace); serializer.Serialize(element_type, o); serializer.WriteEndElement(); } }
public override void SerializeNonReference(object graph, XmlFormatterSerializer serializer) { if (add_method != null) // generic { if (pair_type == null) { pair_type = typeof(KeyValuePair <,>).MakeGenericType(add_method.DeclaringType.GetGenericArguments()); pair_key_property = pair_type.GetProperty("Key"); pair_value_property = pair_type.GetProperty("Value"); } foreach (object p in (IEnumerable)graph) { serializer.WriteStartElement(item_qname.Name, item_qname.Namespace, CurrentNamespace); serializer.WriteStartElement(key_qname.Name, key_qname.Namespace, CurrentNamespace); serializer.Serialize(pair_key_property.PropertyType, pair_key_property.GetValue(p, null)); serializer.WriteEndElement(); serializer.WriteStartElement(value_qname.Name, value_qname.Namespace, CurrentNamespace); serializer.Serialize(pair_value_property.PropertyType, pair_value_property.GetValue(p, null)); serializer.WriteEndElement(); serializer.WriteEndElement(); } } else // non-generic { foreach (DictionaryEntry p in (IEnumerable)graph) { serializer.WriteStartElement(item_qname.Name, item_qname.Namespace, CurrentNamespace); serializer.WriteStartElement(key_qname.Name, key_qname.Namespace, CurrentNamespace); serializer.Serialize(key_type, p.Key); serializer.WriteEndElement(); serializer.WriteStartElement(value_qname.Name, value_qname.Namespace, CurrentNamespace); serializer.Serialize(value_type, p.Value); serializer.WriteEndElement(); serializer.WriteEndElement(); } } }
public override void SerializeNonReference(object graph, XmlFormatterSerializer serializer) { // output item xmlns in advance so that it does not result in excessive xmlns overwrites. if (XmlName.Namespace != element_qname.Namespace && element_qname.Namespace != KnownTypeCollection.MSSimpleNamespace) { serializer.Writer.WriteXmlnsAttribute(null, element_qname.Namespace); } foreach (object o in (IEnumerable)graph) { serializer.WriteStartElement(element_qname.Name, XmlName.Namespace, CurrentNamespace); serializer.Serialize(element_type, o); serializer.WriteEndElement(); } }
public virtual void SerializeNonReference(object graph, XmlFormatterSerializer serializer) { foreach (DataMemberInfo dmi in Members) { FieldInfo fi = dmi.Member as FieldInfo; PropertyInfo pi = fi == null ? (PropertyInfo)dmi.Member : null; Type type = fi != null ? fi.FieldType : pi.PropertyType; object value = fi != null? fi.GetValue(graph) : pi.GetValue(graph, null); serializer.WriteStartElement(dmi.XmlName, dmi.XmlRootNamespace, dmi.XmlNamespace); serializer.Serialize(type, value); serializer.WriteEndElement(); } }
/* * when writeContentOnly is true, then the input XmlWriter * must be at element state. This is to write possible * xsi:nil. * * rootType determines the top-level element QName (thus * it is ignored when writeContentOnly is true). * * preserveObjectReferences indicates that whether the * output should contain ms:Id or not. * (http://schemas.microsoft.com/2003/10/Serialization/) */ public override void WriteObjectContent(XmlDictionaryWriter writer, object graph) { if (graph == null) { return; } int startTypeCount = known_types.Count; XmlFormatterSerializer.Serialize(writer, graph, type, known_types, ignore_ext, max_items, root_ns.Value, preserve_refs, DataContractResolver, default_resolver); // remove temporarily-added known types for // rootType and object graph type. while (known_types.Count > startTypeCount) { known_types.RemoveAt(startTypeCount); } }