c# - Svcutil 未生成所有类
问题描述
我想调用一个我想为其生成代理类的外部 SOAP 服务。.wsdl 不会在线公开,而是与一组 .xsd 文件一起提供。然后我使用 svcutil(也尝试使用 dotnet-svcutil 1.0.4)来生成类。考虑以下 XML:
<xs:complexType name = "ValidationReply" abstract="false">
<xs:complexContent>
<xs:extension base="common:Reply">
<xs:sequence>
<xs:element name="data" type="ns:ValidationReplyData" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="ValidationReplyData" abstract="false">
<xs:sequence>
<xs:element name="errors" type="ns:Error" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
生成以下代码:
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.4")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="Namespace")]
public partial class ValidationReply: Reply
{
private Error[] dataField;
/// <remarks/>
[System.Xml.Serialization.XmlArrayAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=0)]
[System.Xml.Serialization.XmlArrayItemAttribute("errors", Form=System.Xml.Schema.XmlSchemaForm.Unqualified, IsNullable=false)]
public Error[] data
{
get
{
return this.dataField;
}
set
{
this.dataField = value;
}
}
}
问题在于 XML 定义了一个包含错误列表的内部类型,其中 Svcutil 将错误列表直接作为数据字段,而不是使数据字段的类型为 ValidationReplyData。ValidationReplyData 根本不会生成。
代码编译没有任何问题,我可以毫无错误地调用外部服务。然而,数据字段始终为空,因为响应格式为:
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<fl:ValidationReply xmlns:fw="Namespace" >
<data>
<errors>
<code>236</code>
</errors>
<errors>
<code>237</code>
</errors>
</data>
</fl:ValidationReply>
</S:Body>
</S:Envelope>
哪个没有正确反序列化到生成的类。
简而言之,有谁知道如何强制 Svcutil 生成所有类?冗余与否。
我已经简化了 xml 片段,因此示例中可能存在一些不一致之处,但问题的摘要是缺少 ValidationReplyData 类-
解决方案
推荐阅读
- cakephp - 无法让 Bake Console 工作并且所有答案都已过时
- redux - Redux:如何发送耗时的操作
- mysql - 我无法在 MYSQL 中删除 FOREIGN KEY,语法有问题
- docker - 在 Firefox 上执行 Robot Framework/Selenium 测试用例时出错 - 连接被拒绝(操作系统错误 111)
- vue.js - 如何验证任何空输入字段的 vue-form 生成器模式字段
- python - 用“任意”多边形绘制地图
- c# - 在 C# 中反序列化时为 null,在 VB.NET 中工作正常
- elasticsearch - Elasticsearch 百分位数溢出
- wpf - 当包含 TextBlock 的高度变得太小时时,内联会向下移动
- apache-kafka - 创建查询后,ksqlDB 中的窗口大小是否可配置?