【发布时间】:2020-04-03 13:53:53
【问题描述】:
我有以下课程:
public partial class ct_ServiceProductInfoWireless {
private object[] itemsField;
private bool directFulfillmentField;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("NewWirelessLines", typeof(ct_WirelessLines))]
[System.Xml.Serialization.XmlElementAttribute("WirelessLine", typeof(ct_ServiceProductInfoWirelessWirelessLine))]
public object[] Items {
get {
return this.itemsField;
}
set {
this.itemsField = value;
}
}
}
ct_WirelessLines 类
public partial class ct_WirelessLines {
private ct_NewWirelessLine[] wirelessLineField;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("WirelessLine")]
public ct_NewWirelessLine[] WirelessLine {
get {
return this.wirelessLineField;
}
set {
this.wirelessLineField = value;
}
}
}
问题是当我序列化我的 ct_ServiceProductInfoWireless 对象时,我得到以下异常:
类型 ct_WirelessLines[] 不能在此上下文中使用。
这是序列化代码:
var stringWriter = new System.IO.StringWriter();
var serializer = new XmlSerializer(objectToSerialize.GetType());
serializer.Serialize(stringWriter, objectToSerialize); //Getting exception here
return stringWriter.ToString();
怎么了?
ct_NewWirelessLine 类
public partial class ct_NewWirelessLine {
private ct_NewRatePlan ratePlanField;
private ct_DataPlan dataPlanField;
private ct_OrderDevice deviceField;
private ct_PhoneNumber telephoneNumberField;
private string lineNumberField;
private bool isPrimaryLineField;
}
ct_ServiceProductInfoWirelessWirelessLine 类
public partial class ct_ServiceProductInfoWirelessWirelessLine {
private ct_Device deviceField;
private ct_RatePlan ratePlanField;
private ct_InstallmentPlan installmentPlanField;
private string paymentArrangementField;
private ct_OptionalFeature[] optionalPackagesField;
private ct_WirelessFeature[] optionalFeaturesField;
private string lineNumberField;
private string primarySQNumberField;
private string secondarySQNumberField;
private st_CustomerType customerTypeField;
private bool customerTypeFieldSpecified;
private string ppuZipField;
private string wtnField;
private bool directFulfillmentField;
private bool directFulfillmentFieldSpecified;
}
【问题讨论】:
-
请发布
ct_ServiceProductInfoWirelessWirelessLine和ct_NewWirelessLine类,因为当我创建这些自定义类时它运行良好,因此问题可能出在这些类定义中。 -
我无法在您的代码中确定问题的确切位置。然而,发现下面的文章有一个类似的问题和一些答案。希望它能帮助您找到解决方法的线索。 stackoverflow.com/questions/3897818/…
-
你有大量的类,从 cmets 开始,找出许多属性,直到找到有问题的类定义。
-
私有属性不会被序列化。
-
我能够通过将
ct_ServiceProductInfoWireless.Items指定为ct_WirelessLines的数组而不是一维数组来获得错误消息System.InvalidOperationException: The type ct_WirelessLines[] may not be used in this context.:Items = new [] { new [] { new ct_WirelessLines() } }。演示小提琴:dotnetfiddle.net/PaXdUR。代码编译是因为Items只是一个对象数组,但不会序列化,因为XmlSerializer只需要数组中两个声明类型的对象,而不是一些嵌套数组。你能做到吗?
标签: c# arrays xml serialization xmlserializer