2
class A : IXmlSerializable
{ ...
}
class B : A
{
public string X;
}
私がB型のオブジェクトをシリアル化するとき、Aのみがシリアル化されます。最小限の労力でXを含めるにはどうすればよいですか?XMLのシリアル化と継承
class A : IXmlSerializable
{ ...
}
class B : A
{
public string X;
}
私がB型のオブジェクトをシリアル化するとき、Aのみがシリアル化されます。最小限の労力でXを含めるにはどうすればよいですか?XMLのシリアル化と継承
あなたが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
}
}
はあなたを行います本当にIXmlSerializableを実装する必要がありますか?非常に特殊で珍しいスキーマにシリアル化しない限り、XmlSerializerはほとんどの状況を単独で処理できます –
はい、IXmlSerializableを実装する必要があります。 – watbywbarif
なぜですか?あなたはA:Dictionary <...>のために、属性を適用してほとんどすべてを達成することができます。 – Andrey