public void AsyncSerialization(dynamic xmlObject) { Type type; // Generation of .xml file node names string PilotName = NameGeneration(xmlObject.GetType().ToString()), RootName = PilotName + "s"; FileStream file = new FileStream(path, FileMode.Create); using (var writer = new StreamWriter(file)) { writer.WriteLine(EncryptionLine("<?xml version=\"1.0\"?>")); writer.WriteLine(EncryptionLine(string.Format("<{0}>", RootName))); string RetReat = " ", elementEncrypt = ""; for (int i = 0; i < xmlObject.Count; i++) { elementEncrypt = ""; // Obtaining a list item type type = xmlObject[i].GetType(); // Obtaining the list item's fields FieldInfo[] ClassFields = type.GetFields(); elementEncrypt += string.Format("<{0}", PilotName); foreach (var ClassField in ClassFields) { ShOneXmlAttribute attribut = (ShOneXmlAttribute)ClassField.GetCustomAttribute(typeof(ShOneXmlAttribute), false); if (attribut != null) { if (attribut.PositionAttribute == "Attribute") { elementEncrypt += string.Format(" {0}=\"{1}\"", ClassField.Name, ClassField.GetValue(xmlObject[i])); } } } elementEncrypt += ">"; writer.WriteLine(RetReat + EncryptionLine(elementEncrypt)); RetReat += " "; foreach (var ClassField in ClassFields) { ShOneXmlAttribute attribut = (ShOneXmlAttribute)ClassField.GetCustomAttribute(typeof(ShOneXmlAttribute), false); if (attribut == null || attribut.PositionAttribute == "Element") { elementEncrypt = string.Format("<{0}>{1}</{2}>", ClassField.Name, ClassField.GetValue(xmlObject[i]), ClassField.Name); writer.WriteLine("{0}{1}", RetReat, EncryptionLine(elementEncrypt)); } } RetReat = RetReat.Remove(0, 2); writer.WriteLine(RetReat + EncryptionLine(string.Format("</{0}>", PilotName))); } writer.WriteLine(EncryptionLine(string.Format("</{0}>", RootName))); } state = true; }