无法使用XmlSerializer对具有并行通用列表属性的类型进行反序列化

时间:2012-02-24 12:42:36

标签: c# xml-serialization

我对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>

在这种情况下,Someclass的GroupA属性将获取内容,GroupB属性将获得0项,无论它具有什么内容。如果我改变顺序,结果将是相反的。

0 个答案:

没有答案