XmlSerializerを使用してXMLをオブジェクトに逆シリアル化しています。私が抱えている問題は、いったん私が正常に逆シリアル化したことです、配列である私のプロパティの1つがプロパティー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