Note that there are some explanatory texts on larger screens.

plurals
  1. POSerialize List<T> containing List<T>
    primarykey
    data
    text
    <p>I am trying to serialize a list that contains non-system types.</p> <p>Below is my serialization code which is working fine on the top level. and returns a valid XmlDocument, but doesn't seem to contain anything in a inner list.</p> <p>I've looked around the net - and around SO - but can't seem to find anything!</p> <p>Any help much appreciated.</p> <p>Code:</p> <pre><code>public static XmlDocument SerializeToXML&lt;T&gt;(List&lt;T&gt; list, string rootElement) { XmlAttributeOverrides overrides = new XmlAttributeOverrides(); XmlAttributes attr = new XmlAttributes(); attr.XmlRoot = new XmlRootAttribute(rootElement); overrides.Add(typeof(List&lt;T&gt;), attr); XmlDocument xmlDoc = new XmlDocument(); XPathNavigator nav = xmlDoc.CreateNavigator(); using (XmlWriter writer = nav.AppendChild()) { XmlSerializer ser = new XmlSerializer(typeof(List&lt;T&gt;), overrides); ser.Serialize(writer, list); } return xmlDoc; } </code></pre> <p>Code used to test: </p> <pre><code>[TestFixture] public class BaseTesting { [Test] public void test() { List&lt;ListTestClass&gt; list = new List&lt;ListTestClass&gt;(); for (int i = 0; i &lt; 20; i++) { list.Add(new ListTestClass() { intProp = 1, stringProp = "string1", dtProp = DateTime.Now }); } XmlDocument doc = Beyond.Base.Util.XMLUtils.SerializeToXML&lt;ListTestClass&gt;(list, "root"); } } public class ListTestClass { public int intProp { get; set; } public string stringProp { get; set; } public DateTime dtProp { get; set; } [XmlElement("Inner",typeof(InnerListTestClass))] public InnerListTestClass inner { get { return new InnerListTestClass() { intProp = 1, stringProp = "string1", dtProp = DateTime.Now }; } } } public class InnerListTestClass { public int intProp { get; set; } public string stringProp { get; set; } public DateTime dtProp { get; set; } } </code></pre> <p>XML Output:</p> <pre><code>&lt;root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"&gt; &lt;ListTestClass&gt; &lt;intProp&gt;1&lt;/intProp&gt; &lt;stringProp&gt;string1&lt;/stringProp&gt; &lt;dtProp&gt;2011-06-07T09:43:35.1017998+01:00&lt;/dtProp&gt; &lt;/ListTestClass&gt; &lt;ListTestClass&gt; &lt;intProp&gt;1&lt;/intProp&gt; &lt;stringProp&gt;string1&lt;/stringProp&gt; &lt;dtProp&gt;2011-06-07T09:43:35.1017998+01:00&lt;/dtProp&gt; &lt;/ListTestClass&gt; &lt;ListTestClass&gt; &lt;intProp&gt;1&lt;/intProp&gt; &lt;stringProp&gt;string1&lt;/stringProp&gt; &lt;dtProp&gt;2011-06-07T09:43:35.1017998+01:00&lt;/dtProp&gt; &lt;/ListTestClass&gt; &lt;ListTestClass&gt; &lt;intProp&gt;1&lt;/intProp&gt; &lt;stringProp&gt;string1&lt;/stringProp&gt; &lt;dtProp&gt;2011-06-07T09:43:35.1017998+01:00&lt;/dtProp&gt; &lt;/ListTestClass&gt; &lt;ListTestClass&gt; &lt;intProp&gt;1&lt;/intProp&gt; &lt;stringProp&gt;string1&lt;/stringProp&gt; &lt;dtProp&gt;2011-06-07T09:43:35.1017998+01:00&lt;/dtProp&gt; &lt;/ListTestClass&gt; &lt;ListTestClass&gt; &lt;intProp&gt;1&lt;/intProp&gt; &lt;stringProp&gt;string1&lt;/stringProp&gt; &lt;dtProp&gt;2011-06-07T09:43:35.1017998+01:00&lt;/dtProp&gt; &lt;/ListTestClass&gt; &lt;ListTestClass&gt; &lt;intProp&gt;1&lt;/intProp&gt; &lt;stringProp&gt;string1&lt;/stringProp&gt; &lt;dtProp&gt;2011-06-07T09:43:35.1017998+01:00&lt;/dtProp&gt; &lt;/ListTestClass&gt; &lt;ListTestClass&gt; &lt;intProp&gt;1&lt;/intProp&gt; &lt;stringProp&gt;string1&lt;/stringProp&gt; &lt;dtProp&gt;2011-06-07T09:43:35.1017998+01:00&lt;/dtProp&gt; &lt;/ListTestClass&gt; &lt;ListTestClass&gt; &lt;intProp&gt;1&lt;/intProp&gt; &lt;stringProp&gt;string1&lt;/stringProp&gt; &lt;dtProp&gt;2011-06-07T09:43:35.1017998+01:00&lt;/dtProp&gt; &lt;/ListTestClass&gt; &lt;ListTestClass&gt; &lt;intProp&gt;1&lt;/intProp&gt; &lt;stringProp&gt;string1&lt;/stringProp&gt; &lt;dtProp&gt;2011-06-07T09:43:35.1017998+01:00&lt;/dtProp&gt; &lt;/ListTestClass&gt; &lt;ListTestClass&gt; &lt;intProp&gt;1&lt;/intProp&gt; &lt;stringProp&gt;string1&lt;/stringProp&gt; &lt;dtProp&gt;2011-06-07T09:43:35.1017998+01:00&lt;/dtProp&gt; &lt;/ListTestClass&gt; &lt;ListTestClass&gt; &lt;intProp&gt;1&lt;/intProp&gt; &lt;stringProp&gt;string1&lt;/stringProp&gt; &lt;dtProp&gt;2011-06-07T09:43:35.1017998+01:00&lt;/dtProp&gt; &lt;/ListTestClass&gt; &lt;ListTestClass&gt; &lt;intProp&gt;1&lt;/intProp&gt; &lt;stringProp&gt;string1&lt;/stringProp&gt; &lt;dtProp&gt;2011-06-07T09:43:35.1017998+01:00&lt;/dtProp&gt; &lt;/ListTestClass&gt; &lt;ListTestClass&gt; &lt;intProp&gt;1&lt;/intProp&gt; &lt;stringProp&gt;string1&lt;/stringProp&gt; &lt;dtProp&gt;2011-06-07T09:43:35.1017998+01:00&lt;/dtProp&gt; &lt;/ListTestClass&gt; &lt;ListTestClass&gt; &lt;intProp&gt;1&lt;/intProp&gt; &lt;stringProp&gt;string1&lt;/stringProp&gt; &lt;dtProp&gt;2011-06-07T09:43:35.1017998+01:00&lt;/dtProp&gt; &lt;/ListTestClass&gt; &lt;ListTestClass&gt; &lt;intProp&gt;1&lt;/intProp&gt; &lt;stringProp&gt;string1&lt;/stringProp&gt; &lt;dtProp&gt;2011-06-07T09:43:35.1017998+01:00&lt;/dtProp&gt; &lt;/ListTestClass&gt; &lt;ListTestClass&gt; &lt;intProp&gt;1&lt;/intProp&gt; &lt;stringProp&gt;string1&lt;/stringProp&gt; &lt;dtProp&gt;2011-06-07T09:43:35.1017998+01:00&lt;/dtProp&gt; &lt;/ListTestClass&gt; &lt;ListTestClass&gt; &lt;intProp&gt;1&lt;/intProp&gt; &lt;stringProp&gt;string1&lt;/stringProp&gt; &lt;dtProp&gt;2011-06-07T09:43:35.1017998+01:00&lt;/dtProp&gt; &lt;/ListTestClass&gt; &lt;ListTestClass&gt; &lt;intProp&gt;1&lt;/intProp&gt; &lt;stringProp&gt;string1&lt;/stringProp&gt; &lt;dtProp&gt;2011-06-07T09:43:35.1017998+01:00&lt;/dtProp&gt; &lt;/ListTestClass&gt; &lt;ListTestClass&gt; &lt;intProp&gt;1&lt;/intProp&gt; &lt;stringProp&gt;string1&lt;/stringProp&gt; &lt;dtProp&gt;2011-06-07T09:43:35.1017998+01:00&lt;/dtProp&gt; &lt;/ListTestClass&gt; &lt;/root&gt; </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload