I have an object that holds an object that is definded as IEnumerable, i.e.
[Serializable]
[XmlRoot("MyObject")]
public class MyObject
{
[XmlAttribute]
public string Name { get; set; }
[XmlArrayAttribute("Numbers")]
public IEnumerable<string> Numbers { get; set; }
}
When I run the XmlSerializer.Serialize against the object, i.e.
MyObject myObject = new MyObject() {
Name = "My Name" ,
Numbers= new List<string>(){"One", "Two"}
};
var xmlSerializer = XmlSerializer.FromTypes(new[]
{ typeof(MyObject) })[0];
using (var xmlWriter = XmlWriter.Create(@"MyObject.xml"))
{
if (xmlWriter != null) xmlSerializer.Serialize(xmlWriter, myObject);
}
I get
"Cannot serialize member SerializeObjects.MyObject.Numbers of type System.Collections.Generic.IEnumerable`1[[System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]] because it is an interface."
Which I understand that you can't serialize an interface.
Now for the question:
What is the best declaration for the "public IEnumerable Numbers { get; set; }"?
Should I use List<>
, if not why not?