Я использую XmlSerializer для десериализации некоторого XML в объект. Проблема, с которой я сталкиваюсь, - это когда я успешно десериализую, один из моих свойств, который является массивом, имеет свойство isFixedSize
, установленное в true.XmlSerializer устанавливает свойство массива isFixedSize в true
Мне нужно добавить этот массив вручную на более позднем этапе, но не может.
Вот мой объект (другие свойства для краткости опускаем)
namespace Omeda.Customer
{
[Serializable()]
[XmlRoot("Customer")]
public class Customer : Error
{
[XmlArray("CustomerDemographics")]
[XmlArrayItem("CustomerDemographic", typeof(CustomerDemographic))]
public Omeda.Customer.CustomerDemographic[] CustomerDemographics { get; set; }
}
}
А вот метод я использую для десериализации (опять же, код пропущены для краткости)
private T request_Get<T>(string url) where T : new()
{
object returnObject = new T();
try
{
var request = WebRequest.Create(url);
request.Method = "GET";
request.ContentType = "text/xml";
request.Headers.Add("x-omeda-appid", this.API_KEY);
request.Timeout = 50000;
using (var response = request.GetResponse())
{
using (var responseStream = response.GetResponseStream())
{
XmlSerializer serializer = new XmlSerializer(typeof(T));
returnObject = (T)serializer.Deserialize(responseStream);
}
}
}
catch (WebException ex)
{
...
}
return (T)returnObject;
}
После того, как этот объект возвращается, customer.CustomerDemographics.IsFixedSize
возвращает true.
Любая помощь в том, как обойти это, и почему это происходит, было бы здорово.
Вы попробовали сериализовать эти узлы CustomerDemographic вместо коллекции? –
как это? используя общий массив вместо массива? – seanxe