Невозможно десериализовать тип с параллельными свойствами общего списка с помощью XmlSerializer - PullRequest
0 голосов
/ 24 февраля 2012

У меня очень странная проблема с XmlSerializer. У меня есть такой класс

public class SomeClass
{
  public SomeGroupA GroupA {get;set;}
  public SomeGroupB GroupB {get; set;}
}

public class GroupA:List<GroupABase>:IXmlSerializer
{
  //xml serializer stuff
}

public class GroupB:List<GroupBBase>:IXmlSerializer
{
  //xml serializer stuff
}

Общий список производных классов GroupABase и GroupBBase успешно десериализован. Как таковой проблемы с сериализацией и десериализацией производных классов не возникает.

Единственная проблема: за один раз десериализовывается только один из SomeGroupA или SomeGroupB, и это зависит от того, какая группа xml стоит первой в файле xml.

<Root>
  <GroupA>
    <GroupAChild1></GroupAChild1>>
     ...
     ...
     ...
  </GroupA>

  <GroupB>
    <GroupBChild1></GroupBChild1>>
    ...
    ...
    ...
  </GroupB>

</Root>

В этом случае свойство GroupA Someclass будет получать содержимое, а свойство GroupB - 0 элементов независимо от того, какое содержимое оно имеет. И если я изменю порядок, результат будет противоположным.

...