XmlSerializer InvalidOperationExc - 转换类型的已知问题
我正在对XSD.EXE生成的类使用XmlSerializer。
XmlSerializer serializer = new XmlSerializer(obj.GetType());
呕吐
InvalidOperationException无法执行
生成一个临时类(result = 1)。
错误CS0030:无法转换类型
'itemOrderItemsItem []'到
'itemOrderItemsItem'错误CS0029:
无法隐式转换类型
'itemOrderItemsItem'来
'itemOrderItemsItem []'
修复程序(下面标有<!--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...-->
没有找到相关结果
已邀请:
2 个回复
补蹲农界维
之后添加了额外的行:
它是XmlSerializer代码生成组件中的一个已知问题:它无法处理嵌套无界元素的某些情况。它创建的对象模型无效:用户无法使用它来生成xml消息。 不幸的是要解决这个问题,你必须编辑你的模式,以确保所有类似数组的结构都能得到妥善处理。 您需要稍微修改具有以下内容的所有架构构造:
要么
必须改为(分别)
要么
蹄渭信妥扳
Xsd.exe将生成一个xsd:
然后 xsd.exe“this.xsd”/ c 生成具有二维数组的类(items [] [])。我只想要一维数组。我改变了第一行:
现在它有效。猜测序列化器只是二维数组上的barfs。幸运的是我不需要它们。