作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在对 XSD.EXE 生成的类使用 XmlSerializer。
XmlSerializer serializer = new XmlSerializer(obj.GetType());
吐了
InvalidOperationException Unable to generate a temporary class (result=1). error CS0030: Cannot convert type 'itemOrderItemsItem[]' to 'itemOrderItemsItem' error CS0029: Cannot implicitly convert type 'itemOrderItemsItem' to 'itemOrderItemsItem[]'
fix (下面标记为 <!--fix...-->
)说要向我的模式添加一些愚蠢的元素,但这不起作用。此修复已有五年历史。现在有解决办法了吗?
<xs:sequence>
<xs:element name="item" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="model" type="xs:string" minOccurs="0" />
<xs:element name="description" type="xs:string" minOccurs="0" />
<xs:element name="material" type="xs:string" minOccurs="0" />
<xs:element name="lot" type="xs:string" minOccurs="0" />
<xs:element name="serial" type="xs:string" minOccurs="0" />
<xs:element name="transferQty" type="xs:string" minOccurs="0" />
<xs:element name="shipQty" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="tmp" type="xs:string" /><!--fix...-->
最佳答案
如果您有表单的 XML
<items>
<item>
<model>10</model>
<description>Torque wrench</description>
<material>100</material>
<lot>3</lot>
<serial></serial>
<transferQty>1</transferQty>
<shipQty></shipQty>
</item>
<item>
//...
</item>
<item>
//...
</item>
</items>
Xsd.exe 会生成一个 xsd:
<xs:element name="items" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="item" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="model" type="xs:string" minOccurs="0" />
<xs:element name="description" type="xs:string" minOccurs="0" />
<xs:element name="material" type="xs:string" minOccurs="0" />
<xs:element name="lot" type="xs:string" minOccurs="0" />
<xs:element name="serial" type="xs:string" minOccurs="0" />
<xs:element name="transferQty" type="xs:string" minOccurs="0" />
<xs:element name="shipQty" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
然后
xsd.exe "this.xsd" /c
生成一个带有二维数组 (items[][]) 的类。我只想要一个一维数组。我更改了第一行:
<xs:element name="items" minOccurs="0"><!--got rid of maxOccurs (which is what causes the issue)-->
现在可以了。猜猜序列化器只是在二维数组上呕吐。幸运的是我不需要它们。
关于c# - XmlSerializer InvalidOperationExc - 转换类型的已知问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5595779/
我正在对 XSD.EXE 生成的类使用 XmlSerializer。 XmlSerializer serializer = new XmlSerializer(obj.GetType()); 吐了 I
我是一名优秀的程序员,十分优秀!