Ошибка при сериализации XML - PullRequest
       5

Ошибка при сериализации XML

2 голосов
/ 28 сентября 2011

Привет, я получаю эту ошибку при сериализации в 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>

Пожалуйста, дайте мнезнаете, как это исправить.

Спасибо,

Ответы [ 2 ]

1 голос
/ 28 сентября 2011

Звучит как ошибка в xsd.exe Я наткнулся на несколько раз сейчас, он не обрабатывает массивы массивов правильно.

Если это так, вы должны изменить сгенерированные классы так, чтобыXmlSerializer может работать с ним.Неправильные атрибуты или тип свойства Producer.

Если вы опубликовали соответствующий раздел схемы XML, я могу сказать это наверняка, но попробуйте изменить тип * 1008.* свойство от ProducerChannel[][][] до ProducerChannel[][].

Если вы можете изменить схему XML, возможно эта ссылка может помочь без необходимости изменять классы C # после их генерации.

0 голосов
/ 28 сентября 2011

Я думаю, что сообщение об ошибке довольно ясно.У вас есть свойство как ProducerChannel[][] (или ProducerChannel[][][]), но ваш атрибут XmlArrayItem пытается сериализовать его как ProducerChannel[].

...