Имея некоторые проблемы с тем, чтобы мои классы десериализовали правильно.C# Deserialisation List Count Zero
Другие классы десериализации хорошо работают и кажутся похожими по своему характеру, но когда работает десериализатор, я получаю 0 счет для списков ErrorDetail и String.
Что я пропустил/сделал неправильно?
XML:
<PlaceOrderResponse
xmlns="http://blah.co.uk">
<PlaceOrderResult
xmlns:a="http://blah.co.uk/WebserviceMessage"
xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<a:ErrorDetails
xmlns:b="http://blah.co.uk/Error">
<b:ErrorDetail>
<b:Code>1fasd</b:Code>
<b:Message>Explain</b:Message>
</b:ErrorDetail>
</a:ErrorDetails>
<a:ID i:nil="true"/>
<a:InformationalMessages
xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/>
<a:Status>1</a:Status>
</PlaceOrderResult>
</PlaceOrderResponse>
C# Классы:
[Serializable()]
[XmlRoot(ElementName = "PlaceOrderResponse", Namespace = "http://blah.co.uk", IsNullable = false)]
[XmlType(AnonymousType = true, Namespace = "http://blah.co.uk")]
public class PlaceOrderResponse
{
[XmlElement(ElementName = "PlaceOrderResult")]
public PlaceOrderResult placeOrderResult { get; set; }
}
[XmlRoot(ElementName = "PlaceOrderResult")]
public class PlaceOrderResult : WebserviceMessage { }
[XmlRoot(Namespace = "http://blah.co.uk/WebserviceMessage")]
[XmlType(AnonymousType = true)]
public class WebserviceMessage
{
[XmlArray("ErrorDetails")]
[XmlArrayItem("ErrorDetail", typeof(ErrorDetail))]
public ErrorDetails errorDetails { get; set; }
[XmlElement("ID")]
public string ID { get; set; }
[XmlArray("InformationMessages")]
[XmlArrayItem(typeof(String))]
public List<String> InformationMessages { get; set; }
[XmlElement("Status")]
public string Status { get; set; }
}
[XmlRoot(ElementName = "ErrorDetails")]
[XmlTypeAttribute(AnonymousType = true)]
public class ErrorDetails : List<ErrorDetail> { }
[XmlRoot(ElementName = "ErrorDetail", Namespace = "http://blah.co.uk/Error")]
[XmlTypeAttribute(AnonymousType = true)]
public class ErrorDetail
{
[XmlElement(ElementName = "Code")]
public string Code { get; set; }
[XmlElement(ElementName = "Message")]
public string Message { get; set; }
}
Да, спасибо! Я думаю, что у меня было это в какой-то момент, но что-то еще ввернуло, как я пытался исправить, я просто сделал это беспорядок, разместив здесь, прежде чем смутить себя дальше. – PurpleSmurph