現在、派生クラスを使用しているときにXMLからの逆シリアル化に問題があります。シリアライゼーションは正常に動作しますが、その逆を実行すると予期しない要素の例外が発生します。派生型のXMLSerializationの問題
サンプルコード:
public class Foo
{
//Some Properties
}
public class Bar : Foo
{
//more properties
}
public class Holder : IXmlSerializable
{
public Foo SomeObject;
public void WriteXML(XmlWriter writer)
{
var lizer = new XmlSerializer(SomeObject.GetType());
lizer.Serialize(writer,SomeObject);
}
public void ReadXML(XmlReader reader)
{
reader.MoveToContent();
reader.ReadStartElement();
var lizer = new XmlSerializer(typeof(Foo), new Type[] { typeof(Bar) });
SomeObject = (Foo)lizer.Deserialize(reader);
}
Holder.SomeObjectがバーのインスタンスに設定されている場合は直列化が期待どおりに動作します。しかし、逆シリアル化は投げている。私がXmlSerializer ctorに正しいタイプを選択する可能性のあるすべての型を指定したのは私の理解でした。
これは該当しないのですか、それとも何か不足していますか?おかげ
私は変数名として「lizer」を好みます。 Deserializeから取得した例外を確認すると便利です。 – alexdej