【发布时间】:2011-11-14 16:11:39
【问题描述】:
我有一个需要使用 XmlSerializer 序列化的元素数组。我遇到的问题是我有 2 个派生类,并将它们序列化以使它们具有公共基础的元素名称,这似乎不起作用。
所以,这就是 XML 的外观:
<Root>
<Base> foo </Base>
</Root>
相反,我得到了
<Root>
<Derived1> foo </Derived1>
</Root>
我要序列化的元素数组的代码是
private object[] m_nodes;
[System.Xml.Serialization.XmlElementAttribute("Base", typeof(Derived1)]
[System.Xml.Serialization.XmlElementAttribute("Base", typeof(Derived2)]
public object[] Nodes
{
get
{
return this.m_nodes;
}
set
{
this.m_nodes = value;
}
}
通过上面的代码,我知道节点存在反射错误。如果我将 XmlEelementAttributes 中的“Base”都更改为“Derived1”和 Derived2”,它可以工作,但元素名称不正确。
[System.Xml.Serialization.XmlInclude(typeof(Derived1))]
public abstract class Base
{
public Base()
{
}
}
[System.SerializableAttribute()]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public class Derived1: Base
{
public Derived1()
{
}
}
非常感谢任何帮助。非常感谢。
【问题讨论】:
标签: c# xml-serialization