次のクラスがあります。B
継承することに注意してA
ください。
[XmlInclude(typeof(B))]
public class A
{...}
public class B : A
{...}
のインスタンスB
がシリアライズされると、xsi:type
属性が追加されます。
<A xsi:type="B">
なぜこれが起こるのですか?結果はただのはずです<B>
。
これはシリアル化のコードです。
var b = new B();
using (var writer = new XmlTextWriterFull(stream, Encoding.UTF8))
{
writer.Formatting = Formatting.Indented;
var s = new XmlSerializer(typeof(B));
s.Serialize(writer, b);
}
これは、シリアル化する他のクラスでは発生しません。クラスが異なる名前空間にあるためですか?
この問題を回避するにはどうすればよいですか?