XML сериализация и наследование - PullRequest
2 голосов
/ 14 декабря 2010
class A : IXmlSerializable
{     ...
}

class B : A
{
   public string X;
}

Когда я сериализую объект типа B, сериализуется только A.Как я могу включить X с минимальными усилиями?

1 Ответ

3 голосов
/ 14 декабря 2010

Тот факт, что вы реализуете IXmlSerializable, делает его немного сложнее ...

Что вы можете сделать, это сделать WriteXml и ReadXml виртуальными и переопределить их в производном классе:

public class A : IXmlSerializable
{
    public virtual void WriteXml (XmlWriter writer)
    {
        // Serialize A members
    }

    public virtual void ReadXml (XmlReader reader)
    {
        // Deserialize A members
    }

    public XmlSchema GetSchema()
    {
        return(null);
    }


}


public class B : A
{
    public override void WriteXml (XmlWriter writer)
    {
        base.WriteXml(writer);

        // Serialize B members
    }

    public virtual void ReadXml (XmlReader reader)
    {
        base.ReadXml(reader);

        // Deserialize B members
    }
}
...