代码之家  ›  专栏  ›  技术社区  ›  Oliver

C序列化删除子类中的属性?

  •  2
  • Oliver  · 技术社区  · 16 年前

    当我尝试序列化类型的已填充实例时 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的数组。如何使序列化程序包含名称?

    1 回复  |  直到 16 年前
        1
  •  3
  •   Thomas Levesque    16 年前

    集合是以特定的方式序列化的,它只考虑集合的项,而不考虑您添加到类中的额外属性。您需要将集合包装在另一个不是集合的类中。

    这将为您提供所需的结果:

    public class A<T>
    {
         [XmlAttribute("Name")]
         public string Name {get; set;}
    
         [XmlElement(typeof(T))]
         public List<T> Items { get; set; }
    
    }
    
    推荐文章