using System.Collections.Generic;
using System.Xml.Serialization;
[XmlElement("asd", Order = 1)]
public string asd { get; set; }
public string[] qwe { get; set; }
[XmlElement("nnn", Order = 2)]
public XmlNodeWrapper [] nnn
var xml = new XmlDocument();
var nodes = new List<XmlNode>(qwe.Length);
var nnnTag = xml.CreateNode(XmlNodeType.Element, "nnn", null);
return nodes.Select(n => (XmlNodeWrapper)n.ChildNodes).ToArray();
qwe = value.Select(tag => tag.InnerText()).ToArray();
[XmlElement("aaa", Order = 3)]
public string aaa { get; set; }
[XmlType(AnonymousType = true)]
public struct XmlNodeWrapper
public static implicit operator XmlNodeWrapper(XmlNodeList nodes)
return new XmlNodeWrapper { Nodes = nodes == null ? null : nodes.Cast<XmlNode>().ToArray() };
public static implicit operator XmlNode[](XmlNodeWrapper wrapper)
public XmlNode[] Nodes { get; set; }
public string InnerText()
return String.Concat(Nodes.Select(n => n.InnerText));
public static void Test()
qwe = new[] { "q", "w", "e" }
var ss = Deserialize<A>(s);
Console.WriteLine(string.Format("Equals: {0};", s == s2));
public static string Serialize<T>(T a)
var s = new XmlSerializer(typeof(T));
using (var ms = new MemoryStream())
using (TextWriter sw = new StreamWriter(ms))
using (var sr = new StreamReader(ms))
public static T Deserialize<T>(string a)
var s = new XmlSerializer(typeof(T));
var bytes = Encoding.ASCII.GetBytes(a);
using (var ms = new MemoryStream(bytes))
return (T)s.Deserialize(ms);
public class AssertionFailedException : System.Exception
public AssertionFailedException() : base() { }
public AssertionFailedException(string s) : base(s) { }
public static class Assert
public static void IsTrue(bool value)
IsTrue(value, "Assertion failed");
public static void IsTrue(bool value, string message)
throw new AssertionFailedException(message);
public static void Main()