I tener un objeto que contiene un objeto que se definded como IEnumerable, es decirObjetos serializar utilizando xmlSerializer.Serialize y objetos IEnumerable
[Serializable]
[XmlRoot("MyObject")]
public class MyObject
{
[XmlAttribute]
public string Name { get; set; }
[XmlArrayAttribute("Numbers")]
public IEnumerable<string> Numbers { get; set; }
}
Cuando funciono el XmlSerializer.Serialize contra el objeto, es decir,
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);
}
me sale
"no se puede serializar miembros SerializeObjects.MyObject.Numbers de tipo System.Collections.Generic.IEnumerable`1 [[System.String, mscorlib, versión = 2.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089]] porque es una interfaz ".
Que entiendo que no puede serializar una interfaz.
Ahora la pregunta:
¿Cuál es la mejor declaración de los "números públicos IEnumerable {get; set;}"?
Debo usar List<>
, de lo contrario ¿por qué no?