c# - no se puede generar una clase temporal(result=1) error cs1567
No se puede generar una clase temporal(resultado=1). error CS0030: ¿No se puede convertir el tipo ''Tipo[]'' a ''Tipo''? (7)
Tuve el mismo problema, pero Xsd2Code no se integró con VS2012. Así que, en cambio, fui a mi archivo .cs generado xsd.exe y lo hice:
Encontrar [] [] Reemplazar []
que funcionó.
Recibo este error después de crear una clase desde mi archivo xsd usando la herramienta xsd.exe. Entonces busqué en la red y encontré una solución. Aquí está el enlace: http://satov.blogspot.com/2006/12/xsdexe-generated-classes-causing.html
El problema es que esto hace que el código se ejecute, pero de alguna manera los datos deserializados parecen corruptos. Hice lo que el sitio sugiere y, al final, la segunda dimensión de la matriz está siempre vacía (ver los comentarios del sitio, alguien también tuvo este problema). La pregunta es, ¿cómo resuelvo este problema ahora? ¿Hay alguna otra herramienta para crear el archivo xsd? Intenté Xsd2Code, sin éxito.
Gracias :-)
En mi caso, los casos de problemas se deben a una declaración inválida para el atributo de propiedad XmlArrayItem.
De
[XmlArrayItem("MyArray", typeof(string))]
public List<ClassName> Items{ get; set; }
Cambié con el tipo apropiado: de cadena a ClassName
[XmlArrayItem("MyArray", typeof(ClassName))]
public List<ClassName> Items{ get; set; }
¡Espero que esto ayude!
Necesita cambiar el tipo de una variable miembro en la clase serializada. Por ejemplo, si genera un error como:
No se puede generar una clase temporal (resultado = 1). error CS0030: No se puede convertir el tipo ''Datos []'' en ''Datos''.
Ejecuté una búsqueda en el nombre del tipo de datos en el archivo generado, y encontré esto:
[System.Xml.Serialization.XmlArrayItemAttribute("Data", typeof(Data), IsNullable=false)]
public Data[][] Row
Reemplazar Data[][]
con Data[]
- Cambiar el tipo de datos de una matriz 2D a una matriz 1D. Resolvería tu problema :)
Si está en VB.net, entonces debe buscar () () en su Reference.vb y reemplazarlo con ()
Añada <xs:attribute name="tmp" type="xs:string" />
después de cada
<xs:sequence maxOccurs="unbounded"> <xs:element ../> </xs:sequence>
y
<xs:sequence> <xs:element maxOccurs="unbounded"/> </xs:sequence>
elemento en su archivo de esquema si no desea perder la dimensión de la matriz .
Obtuve este error. En su solución hay un archivo reference.cs en ese archivo que necesita buscar "[] []" y luego habrá dos resultados en él.
Después de que necesite eliminar un "[]" de "[] []" de ambos lugares ..
Esto funciona para mi..
Gracias..
Para mí, es útil parchar el XML utilizado para generar el código. Sucede cuando:
<Names>
<Name></Name>
<Name></Name>
</Names>
entonces esto se optimiza mediante xsd para doble entrada de nombre de matriz
Lo que hice fue:
<Names>
<Dummy></Dummy>
<Name></Name>
<Name></Name>
</Names>
el xsd no lo optimiza pero deja el nombre de la matriz única