【发布时间】:2012-11-24 17:27:19
【问题描述】:
我有以下类,注意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);
}
这不会发生在我序列化的其他类中。是因为这些类位于不同的命名空间中吗?
我该如何解决这个问题?
【问题讨论】:
-
如果你展示你如何序列化的代码,人们可以提供更好的帮助。
-
多么真实,请看我的编辑
-
我不知道
XmlTextWriterFull是什么,但这有效using (var writer = new StringWriter()) { var s = new XmlSerializer(typeof(B)); s.Serialize(writer, b); var xml = writer.ToString(); } -
谢谢,您的解决方案有效。我的例子不完整,我犯了一个严重的思维错误。很抱歉给您添麻烦,我会标记该问题以删除。
标签: c# .net xml serialization