Cop*_*ill 11 serialization interface
我有一个对象,其中包含一个被定义为IEnumerable的对象,即
[Serializable]
[XmlRoot("MyObject")]
public class MyObject
{
[XmlAttribute]
public string Name { get; set; }
[XmlArrayAttribute("Numbers")]
public IEnumerable<string> Numbers { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
当我对对象运行XmlSerializer.Serialize时,即
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);
}
Run Code Online (Sandbox Code Playgroud)
我明白了
"无法序列化System.Collections.Generic.IEnumerable`1 [[System.String,mscorlib,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089]]类型的成员SerializeObjects.MyObject.Numbers,因为它是一个接口."
据我所知,您无法序列化界面.
现在提问:
什么是"公共IEnumerable Numbers {get; set;}"的最佳声明?
我应该使用List<>,如果不是,为什么不呢?