当我尝试序列化类型的已填充实例时 List<C>() 在哪里?
List<C>()
public class A<T> : List<T> { [XmlAttribute("Name")] public string Name {get; set;} public A() {} } public class B { [XmlAttribute("Other")] public string OtherPCO { get; set:} } public class C : A<B> { }
序列化会删除类A的name属性,但会使用OtherPCO属性创建类型B的数组。如何使序列化程序包含名称?
集合是以特定的方式序列化的,它只考虑集合的项,而不考虑您添加到类中的额外属性。您需要将集合包装在另一个不是集合的类中。
这将为您提供所需的结果:
public class A<T> { [XmlAttribute("Name")] public string Name {get; set;} [XmlElement(typeof(T))] public List<T> Items { get; set; } }