我有:
public class B
{
public string Some { get; set; }
}
public class D : B
{
public string More { get; set; }
}
[KnownType(typeof(D))]
public class X
{
public B[] Col { get; set; }
}
我想自动读/写XML:
<X>
<Col>
<B Some="val1" />
<D Some="val2" More="val3" />
</Col>
</X>
XmlSerializer
没有DataContractSerializer
都没有帮助我。这种XML结构是强制性的。
所以问题是:这可以实现吗,还是我必须手动解析XML?
谢谢, 安德烈
答案 0 :(得分:8)
使用XmlSerializer尝试XmlArrayItem:
public class X
{
[XmlArrayItem(typeof(D)),
XmlArrayItem(typeof(B))]
public B[] Col { get; set; }
}
答案 1 :(得分:4)
听起来你在序列化对象的集合部分时遇到了麻烦。在使用XML包含派生类型的集合序列化时,需要通知序列化程序有关可能出现在XmlInclude属性
的集合中的所有派生类型的信息。[KnownType(typeof(D))]
public class X
{
[XmlInclude(Type=typeof(B))]
[XmlInclude(Type=typeof(D))]
public B[] Col { get; set; }
}