【发布时间】:2012-02-09 11:20:35
【问题描述】:
我正在使用 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。
任何关于如何解决这个问题以及为什么会发生这种情况的帮助都会很棒。
【问题讨论】:
-
您是否尝试将这些 CustomerDemographic 节点序列化为一个集合?
-
你是什么意思?使用泛型而不是数组?
标签: c# asp.net serialization xml-serialization