When a class is inherited from List<>, XmlSerializer doesn't serialize other attributes

前端 未结 2 1606
梦毁少年i
梦毁少年i 2020-11-27 07:45

I\'m having a situation here, I need my class to be inherited from List, but when I do this XmlSerializer does not serialize any property or fie

2条回答
  •  萌比男神i
    2020-11-27 08:39

    This is by design. I don't know why this decision was made, but it is stated in the documentation:

    • Classes that implement ICollection or IEnumerable. Only collections are serialized, not public properties.

    (Look under "Items that can be serialized" section). Someone has filed a bug against this, but it won't be changed - here, Microsoft also confirms that not including the properties for classes implementing ICollection is in fact the behaviour of XmlSerializer.

    A workaround would be to either:

    • Implement IXmlSerializable and control serialization yourself.

    or

    • Change MyClass so it has a public property of type List (and don't subclass it).

    or

    • Use DataContractSerializer, which handles this scenario.

提交回复
热议问题