public void WriteXml(XmlWriter writer)
 {
     foreach (var kvp in this)
     {
         writer.WriteStartElement(kvp.Key);
         if (kvp.Value != null)
         {
             var childSerializer =
                 XmlPrimitiveSerializer.TryGetPrimitiveSerializer(kvp.Value.GetType());
             if (childSerializer != null)
             {
                 childSerializer.Serialize(writer, kvp.Value, XmlSerializableSettings.Default);
             }
             else
             {
                 XmlSerializable.Serialize(writer, kvp.Value);
             }
         }
         else
         {
             writer.WriteAttributeString("nil", XmlSerializerBase.XsiNamespace, "true");
         }
         writer.WriteEndElement();
     }
 }
Exemplo n.º 2
0
 public static T Deserialize <T>(XmlReader reader)
 {
     if (typeof(XmlSerializable).IsAssignableFrom(typeof(T)))
     {
         var obj = (T)Activator.CreateInstance(typeof(T), nonPublic: true);
         ((XmlSerializable)(object)obj).ReadXml(reader, validateRoot: true);
         return(obj);
     }
     else
     {
         var serializer = new XmlSerializable <T>(
             (T)Activator.CreateInstance(typeof(T), nonPublic: true)
             );
         serializer.ReadXml(reader, validateRoot: true);
         return(serializer.Instance);
     }
 }