基类的XMLSerialization不是派生类

时间:2011-03-13 15:15:08

标签: c# xml-serialization

我有一个实现了许多我想要存储的属性的基类,以及一个包含我不想存储的附加属性的派生类(它们可能非常大)。我有一个容器类,其中包含基类列表,而基类列表又包含基类实例和派生类的混合。我为容器类创建了一个XMLSerializer,但是在序列化时,它会抱怨派生类没有包含在内。

是否有任何方法强制序列化程序仅输出基类XML,而不管实例类型如何?

注意,我不想使用XMLInclude,因为我特别不希望存储派生类中的任何属性。

(代码的简化示例)

public class MyBase {
    public String Title { get; set; }
}
public class MyDerived : MyBase {
    public String Details { get; set; }
}
public class Container {
    private static XmlSerializer sSerializer = new XmlSerializer(typeof(Container));

    public List<MyBase> mBases { get; set; }

    public void MyProblem() {
        mBases = new List<MyBase>();
        mBases.Add(new MyBase { Title = "One" });
        mBases.Add(new MyDerived { Title = "Two", Details = "An incredibly long string" });
        using (var lWriter = XmlWriter.Create("C:\\Temp\\output.xml")) {
            sSerializer.Serialize(lWriter, this);
        }
    }
}

0 个答案:

没有答案