我有以下类,注意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);
}这不会发生在我序列化的其他类中。是因为这些类位于不同的名称空间吗?
如何解决此问题?
发布于 2012-11-25 01:48:08
尝试以下方法:
B b = new B();
byte[] data = SerializeObject(b);
File.WriteAllBytes("test.xml", data);以下是序列化的代码
/// <summary>
/// Serialize object
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
internal static byte[] SerializeObject(object data)
{
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
//empty namespace...
ns.Add("", "");
XmlSerializer xmlSerializer = new XmlSerializer(data.GetType());
MemoryStream memStream = new MemoryStream();
xmlSerializer.Serialize(memStream, data, ns);
byte[] result = memStream.ToArray();
memStream.Dispose();
return result;
}序列化后的结果是:
<?xml version="1.0"?>
<B>
</B>https://stackoverflow.com/questions/13543643
复制相似问题