C# 如何将XML项反序列化为不同的对象?

C# 如何将XML项反序列化为不同的对象?,c#,xml-deserialization,C#,Xml Deserialization,我从第三方收到的XML格式如下: <?xml version="1.0" encoding="utf-16"?> <ColorPages version="1"> <Page PrintedPagePosition="0" PDFPagePosition="0" IsColor="True" /> <Ghost PrintedPagePosition="1" PDFPagePosition=

我从第三方收到的XML格式如下:

<?xml version="1.0" encoding="utf-16"?>
<ColorPages version="1">
                <Page PrintedPagePosition="0" PDFPagePosition="0" IsColor="True" />
                <Ghost PrintedPagePosition="1" PDFPagePosition="1" MayBePrinted="Unprinted" IsColor="False" />
                <Page PrintedPagePosition="2" PDFPagePosition="2" IsColor="False" />
                <Ghost PrintedPagePosition="3" PDFPagePosition="3" MayBePrinted="Unprinted" IsColor="False" />
                <Page PrintedPagePosition="4" PDFPagePosition="4" IsColor="False" />
                <Page PrintedPagePosition="5" PDFPagePosition="5" IsColor="True" />
</ColorPages>
现在,我知道我必须创建一个
BasePage
类,它是
Page
Ghost
的基类,但我不确定如何让反序列化程序处理这个问题。

[XmlRoot(“ColorPages”)]
[XmlRoot("ColorPages")]
public class ColorPages
{
    [XmlElement("Ghost")]
    List<Ghost> ghost{ get; set; }

    [XmlElement("Page")]
    List<Page> page{ get; set; }
}
[XmlRoot("Ghost")]
public class Ghost
{

}
[XmlRoot("Page")]
public class Page
{

}
公共类彩色页 { [XmlElement(“Ghost”)] 列表重影{get;set;} [XmlElement(“页面”)] 列表页{get;set;} } [XmlRoot(“Ghost”)] 公共级幽灵 { } [XmlRoot(“页面”)] 公共类页面 { }
反序列化程序将看到元素名称并实例化相应的具体类、页面或重影<代码>项目虽然应该是
列表
谢谢,这太棒了!
[XmlRoot("ColorPages")]
public class ColorPages
{
    [XmlElement("Ghost")]
    List<Ghost> ghost{ get; set; }

    [XmlElement("Page")]
    List<Page> page{ get; set; }
}
[XmlRoot("Ghost")]
public class Ghost
{

}
[XmlRoot("Page")]
public class Page
{

}