无法生成临时类(result = 1).错误CS0030:无法将类型'Type []'转换为'Type'?

gra*_*ady 48 c# xsd xml-deserialization

我使用xsd.exe工具从我的xsd文件创建一个类后出现此错误.所以我在网上搜索并找到了解决方案.这是链接:http://satov.blogspot.com/2006/12/xsdexe-generated-classes-causing.html

问题是这会使代码运行,但不知何故反序列化数据似乎已损坏.我做了网站建议的内容,最后第二个数组维度总是空的(参见网站的评论,有人也有这个问题).问题是,我现在该如何解决这个问题?是否有另一种工具来创建xsd文件?我尝试过Xsd2Code,没有成功.

谢谢 :-)

小智 116

您需要更改序列化类中成员变量的类型.例如,如果它引发错误,如:

无法生成临时类(result = 1).错误CS0030:无法将类型'Data []'转换为'Data'.

我在生成的文件中搜索了数据类型名称,我发现了这个:

[System.Xml.Serialization.XmlArrayItemAttribute("Data", typeof(Data), IsNullable=false)]
public Data[][] Row
Run Code Online (Sandbox Code Playgroud)

替换Data[][]Data[] - 将数据类型从2D阵列更改为1D阵列.它会解决你的问题.:)

  • 谢谢你的提示.但是为什么Microsoft XSD Tool会生成2D数组呢? (11认同)
  • 在使用Microsoft的XSD为TD Ameritrade的股票代理API返回的XML生成类时,我遇到了同样的问题.我想知道是否有比XSD.EXE更好的工具可以自动生成而无需我们手动清理C#类?我在一个XML中得到太多错误,我还有更多要处理的错误......! (7认同)

小智 14

有同样的问题,但Xsd2Code没有与VS2012集成.所以我去了我的xsd.exe生成的.cs文件并做了:

找[] []替换[]

哪个有效.


sha*_*kla 8

我收到了这个错误.在您的解决方案中,该文件中有reference.cs文件,您需要搜索"[] []",然后会有两个结果...

需要从两个地方的"[] []"中删除一个"[]"之后..

这个对我有用..

谢谢..


Wal*_*ski 5

如果您不想丢失数组的维度,请 在架构文件中的<xs:attribute name="tmp" type="xs:string" /> 每个
<xs:sequence maxOccurs="unbounded"> <xs:element ../> </xs:sequence>

<xs:sequence> <xs:element maxOccurs="unbounded"/> </xs:sequence>
元素之后添加。