Jak mogę poprawnie zmodyfikować wygenerowany XSD, aby przezwyciężyć znany błąd .Net, który powoduje wyjątek „cs0030: Nie można wygenerować klasy tymczasowej”

Otrzymałem zadanie wysyłania danych do usługi internetowej innej firmy, udostępnili usługę testową, która, jak udowodniono, działa z klientem Java, jednak nie działa w .Net.

Gdy generuję proxy usługi i inicjuję usługę lub serializuję obiekt żądania, pojawia się następujący błąd:

<code>Unable to generate a temporary class (result=1). 
error CS0030: Cannot convert type 'TestStarXML.wsStarService.VSOptionInclusiveSetType[]' to 'TestStarXML.wsStarService.VSOptionInclusiveSetType' 
error CS0030: Cannot convert type 'TestStarXML.wsStarService.VSOptionConflictSetType[]' to 'TestStarXML.wsStarService.VSOptionConflictSetType'
error CS0030: Cannot convert type 'TestStarXML.wsStarService.ColorRequirementSetType[]' to 'TestStarXML.wsStarService.ColorRequirementSetType' 
error CS0030: Cannot convert type 'TestStarXML.wsStarService.ColorExclusionSetType[]' to 'TestStarXML.wsStarService.ColorExclusionSetType' 
error CS0029: Cannot implicitly convert type 'TestStarXML.wsStarService.VSOptionInclusiveSetType' to 'TestStarXML.wsStarService.VSOptionInclusiveSetType[]' 
error CS0029: Cannot implicitly convert type 'TestStarXML.wsStarService.VSOptionConflictSetType' to 'TestStarXML.wsStarService.VSOptionConflictSetType[]' 
error CS0029: Cannot implicitly convert type 'TestStarXML.wsStarService.ColorRequirementSetType' to 'TestStarXML.wsStarService.ColorRequirementSetType[]' 
error CS0029: Cannot implicitly convert type 'TestStarXML.wsStarService.ColorExclusionSetType' to 'TestStarXML.wsStarService.ColorExclusionSetType[]'
</code>

Strona trzecia, która wysłała nam tę usługę, korzysta z Javy i nie mieli problemu z wygenerowaniem proxy usługi z usługi testowej. Do tej pory rozumiem, że jest błąd w .Net (Spójrz tutaj) generowanie XSD dla pliku WSDL.

W odpowiedzitutaj, wspomina o modyfikacji wygenerowanego XSD z atrapami, więc dodałem atrapę jako sugerowaną:

<code><xs:complexType name="VSInclusivesOptionType">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="VSOptionInclusiveSet" type="tns:VSOptionInclusiveSetType" />
    </xs:sequence>
    <xs:attribute name="tmp" type="xs:string" />   <!-- this is all I have added (for each of the types in the exception message) -->
  </xs:complexType>
  <xs:complexType name="VSOptionInclusiveSetType">
    <xs:sequence>
      <xs:element minOccurs="0" name="SetID" type="ns2:IdentifierType" />
      <xs:element minOccurs="0" name="NumberOfOptionsNumeric" type="xs:decimal" />
      <xs:element minOccurs="0" maxOccurs="unbounded" name="VSOption2" type="tns:VSOption2Type" />
    </xs:sequence>
  </xs:complexType>
</code>

Jedyną rzeczą dodaną do atrybutu atrapy było skrócenie czasu kompilacji projektu z minut na sekundy.

Poza tym VS2008 najwyraźniej nie zauważył zmian - nadal nie mogę serializować obiektu ani tworzyć instancji usługi bez uzyskania wspomnianego powyżej wyjątku, czego brakuje lub co robię źle?

questionAnswers(2)

yourAnswerToTheQuestion