예제 #1
0
 /// <summary>Returns an array of <see cref="T:System.Xml.Serialization.XmlSerializer" /> objects created from an array of <see cref="T:System.Xml.Serialization.XmlTypeMapping" /> objects.</summary>
 /// <returns>An array of <see cref="T:System.Xml.Serialization.XmlSerializer" /> objects.</returns>
 /// <param name="mappings">An array of <see cref="T:System.Xml.Serialization.XmlTypeMapping" /> that maps one type to another. </param>
 public static XmlSerializer[] FromMappings(XmlMapping[] mappings)
 {
     XmlSerializer[] array = new XmlSerializer[mappings.Length];
     XmlSerializer.SerializerData[] array2          = new XmlSerializer.SerializerData[mappings.Length];
     XmlSerializer.GenerationBatch  generationBatch = new XmlSerializer.GenerationBatch();
     generationBatch.Maps  = mappings;
     generationBatch.Datas = array2;
     for (int i = 0; i < mappings.Length; i++)
     {
         if (mappings[i] != null)
         {
             XmlSerializer.SerializerData serializerData = new XmlSerializer.SerializerData();
             serializerData.Batch = generationBatch;
             array[i]             = new XmlSerializer(mappings[i], serializerData);
             array2[i]            = serializerData;
         }
     }
     return(array);
 }
예제 #2
0
 private XmlSerializationReader CreateReader(XmlMapping typeMapping)
 {
     lock (this)
     {
         if (this.serializerData != null)
         {
             XmlSerializer.SerializerData obj = this.serializerData;
             XmlSerializationReader       xmlSerializationReader;
             lock (obj)
             {
                 xmlSerializationReader = this.serializerData.CreateReader();
             }
             if (xmlSerializationReader != null)
             {
                 return(xmlSerializationReader);
             }
         }
     }
     if (!typeMapping.Source.CanBeGenerated || XmlSerializer.generationThreshold == -1)
     {
         return(new XmlSerializationReaderInterpreter(typeMapping));
     }
     this.CheckGeneratedTypes(typeMapping);
     lock (this)
     {
         XmlSerializer.SerializerData obj2 = this.serializerData;
         XmlSerializationReader       xmlSerializationReader;
         lock (obj2)
         {
             xmlSerializationReader = this.serializerData.CreateReader();
         }
         if (xmlSerializationReader != null)
         {
             return(xmlSerializationReader);
         }
         if (!XmlSerializer.generatorFallback)
         {
             throw new InvalidOperationException("Error while generating serializer");
         }
     }
     return(new XmlSerializationReaderInterpreter(typeMapping));
 }
예제 #3
0
 internal XmlSerializer(XmlMapping mapping, XmlSerializer.SerializerData data)
 {
     this.typeMapping    = mapping;
     this.serializerData = data;
 }