您好,我在序列化为XML时遇到此错误
Unable to generate a temporary class (result=1).
error CS0030: Cannot convert type 'XYZ.ProducerChannel[][]' to 'XYZ.ProducerChannel[]'
error CS0029: Cannot implicitly convert type 'XYZ.ProducerChannel[]' to 'XYZ.ProducerChannel[][]'
有人可以帮我解决最新情况吗? 根据类别:
/// <remarks/>
[System.Xml.Serialization.XmlArrayItemAttribute("CarrierAppointment", typeof(ProducerChannel[]), IsNullable=false)]
[System.Xml.Serialization.XmlArrayItemAttribute("DistributionChannelInfo", typeof(ProducerChannel), IsNullable=false, NestingLevel=1)]
public ProducerChannel[][][] Producer
{
get
{
return this.producerField;
}
set
{
this.producerField = value;
}
}
用法:
var producer = new InitialPurchaseOrder.ProducerChannel{DistributionChannelName = division};
bdParty.Producer = new InitialPurchaseOrder.ProducerChannel[][][]// {{},{},{producer}};
{new InitialPurchaseOrder.ProducerChannel[][]
{new InitialPurchaseOrder.ProducerChannel[]{producer}}};
错误行:
var serializer = new System.Xml.Serialization.XmlSerializer(txLife.GetType());
相关XSD:
<xs:element name="Policy" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Annuity" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="QualPlanType" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="tc" form="unqualified" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
请告诉我如何解决这个问题。
谢谢,
答案 0 :(得分:1)
听起来像xsd.exe
中的一个错误我现在偶然发现了几次,它无法正确处理数组。
如果是这种情况,您必须修改生成的类,以便XmlSerializer
可以使用它。
Producer
属性的属性或类型不正确。
如果您已发布XML架构的相关部分,我可以肯定地说出来,但请尝试将Producer
属性的类型从ProducerChannel[][][]
更改为ProducerChannel[][]
。
如果您可以修改XML模式,那么this link可以提供帮助,而无需在生成后修改C#类。
答案 1 :(得分:0)
我认为错误信息非常清楚。您拥有ProducerChannel[][]
(或ProducerChannel[][][]
)属性,但您的XmlArrayItem属性正尝试将其序列化为ProducerChannel[]
。