C# 无法使用XmlSerializer反序列化具有并行泛型列表属性的类型
我在XmlSerializer方面遇到了一个非常奇怪的问题。我有一节这样的课C# 无法使用XmlSerializer反序列化具有并行泛型列表属性的类型,c#,xml-serialization,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 Group
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
}
公共类SomeClass
{
公共SomeGroupA GroupA{get;set;}
公共SomeGroupB GroupB{get;set;}
}
公共类GroupA:列表:IXmlSerializer
{
//xml序列化程序
}
公共类GroupB:列表:IXmlSerializer
{
//xml序列化程序
}
GroupBase和GroupBBase的派生类的泛型列表都已成功反序列化。因此,派生类的序列化和反序列化没有问题
唯一的问题是:一次只能反序列化SomeGroupA或SomeGroupB中的一个,这取决于xml文件中哪个组的xml排在第一位
<Root>
<GroupA>
<GroupAChild1></GroupAChild1>>
...
...
...
</GroupA>
<GroupB>
<GroupBChild1></GroupBChild1>>
...
...
...
</GroupB>
</Root>
>
...
...
...
>
...
...
...
在这种情况下,Someclass的GroupA属性将获得内容,而GroupB属性将获得0项,无论它有什么内容。如果我改变顺序,结果会相反 在我看来,您的IXmlSerializable似乎将读取器放在了错误的位置,但我们无法看到,因为您没有显示该代码。我已尝试设置断点,在本例中,IXmlSerializable的方法根本不会为xml显示在第二位的其他组调用。