多态XML序列化/反序列化

And*_*rey 3 .net xml serialization xml-serialization

我有:

public class B     
{
    public string Some { get; set; }
}

public class D : B
{
    public string More { get; set; }
}

[KnownType(typeof(D))]
public class X
{        
    public B[] Col { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我想自动读/写XML,如下所示:

<X>
 <Col>
  <B Some="val1" />
  <D Some="val2" More="val3" />
 </Col>
</X>
Run Code Online (Sandbox Code Playgroud)

XmlSerializer没有DataContractSerializer帮助我.此XML结构是必需的.

所以问题是:这可以实现,还是我必须手动解析XML?

谢谢,安德烈

Dmi*_*sky 8

尝试使用XmlSerializer的XmlArrayItem:

public class X
{        
     [XmlArrayItem(typeof(D)),
      XmlArrayItem(typeof(B))]
     public B[] Col { get; set; }
}
Run Code Online (Sandbox Code Playgroud)