当我尝试序列化 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; }
}
关于C# 序列化在子类中删除属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2102047/