/// <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); }
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)); }
internal XmlSerializer(XmlMapping mapping, XmlSerializer.SerializerData data) { this.typeMapping = mapping; this.serializerData = data; }