Я использую XmlSerializer для десериализации некоторого XML в объект. Проблема, с которой я столкнулся, заключается в том, что после успешной десериализации одно из моих свойств, которое представляет собой массив, имеет свойство 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.
Любая помощь в том, как обойти это, и почему это происходит, было бы здорово.