mfa*_*nto 1 c# xml-serialization
我有一个元素数组,我需要使用XmlSerializer序列化.我遇到的问题是我有2个派生类,并序列化它们,因此它们有一个共同基础的元素名称,似乎不起作用.
所以,这就是XML的外观:
<Root>
<Base> foo </Base>
</Root>
Run Code Online (Sandbox Code Playgroud)
相反,我得到了
<Root>
<Derived1> foo </Derived1>
</Root>
Run Code Online (Sandbox Code Playgroud)
我序列化的元素数组的代码是
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;
}
}
Run Code Online (Sandbox Code Playgroud)
使用上面的代码,我发现节点有一个反射错误.如果我将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()
{
}
}
Run Code Online (Sandbox Code Playgroud)
任何帮助是极大的赞赏.非常感谢.
XML序列化包括序列化和反序列化例程.因此,如果您确实设法执行此操作,那么序列化程序将无法确定在反序列化生成的XML结构时要使用的类型.根据我的经验,最好使用两个不同的名称或使用XmlWriter和XmlReader类使用自定义序列化器/反序列化器.
归档时间: |
|
查看次数: |
3049 次 |
最近记录: |