我有通用基类,它有属性主体和另一个派生类,它有属性头,当我将派生类反序列化为xml时,它首先将主体放置为第一个元素然后是头部(按字母顺序反序列化)但是我想要头首先然后是身体。我已经尝试过XmlElement的订单属性,但它无法正常工作
示例类:
[XmlRoot("BaseClass", Namespace = "http://schemas.xmlsoap.org/soap/envelope/")]
public class BaseClass<T>
{
public T Body { get; set; }
}
[XmlRoot("DerivedClass", Namespace = "http://schemas.xmlsoap.org/soap/envelope/")]
public class DerivedClass<THeader, TBody> : BaseClass<TBody>
where THeader : IEnvelopeHeader where TBody : class, IEnvelopeBody, new()
{
public THeader Header { get; set; }
}
我看到一个解决方案,它说基类中的属性为抽象类并在派生类中重写然后决定顺序,但我不能使用这个解决方案,我的基类也用于其他一些项目。 / p>
答案 0 :(得分:0)
我现在通过删除继承来解决订单问题,但这不是我想要实现的,我所需要的是按照定义的顺序对xml元素进行排序,即使使用继承链也是如此。
[XmlRoot("Envelope", Namespace = "http://schemas.xmlsoap.org/soap/envelope/")]
public class Envelope<THeader, TBody>
where THeader : IEnvelopeHeader where TBody : class, IEnvelopeBody, new()
{
[XmlElement(ElementName = "Header", Order = 1)]
public THeader Header { get; set; }
[XmlElement(ElementName = "Body", Order = 2)]
public TBody Body { get; set; }
}