我使用wsdl.exe将WSDL文件和Types.xsd文件转换为C#文件.wsdl文件指定可选变量(minOccurs="0" maxOccurs="1"),生成的.NET类型通过创建两个字段来处理它 - 一个用于变量(例如status),另一个用于告知您是否指定了(statusSpecified).
有没有办法使用该wsdl工具只创建一个字段Nullable(即如果不是null,则指定)?(如果有帮助,我想我可以更改wsdl文件以获取nillable="true"元素.)
是否有一个不同的,更好的工具将从WSDL生成.NET类型?我使用的是.NET 4,因此如果生成的类型利用了Nullable类型等功能,那将非常有用.
注意:我刚刚意识到我正在使用.NET 2中的wsdl工具,并且较新的项目应该使用WCF来完成这些工作.WCF上的任何指针都可以获得我想要的东西吗?
关于WCF,本文指出了使用该svcutil工具的方向(已经在我的PATH中,所以我可以从文件夹中的命令行运行它与wsdl和xsd文件,如下所示:) svcutil *.wsdl *.xsd /language:C#.不幸的是,使用Nullable类型而不是xSpecified变量,svcutil似乎没有做得更好.
不,除非您修改 xsd 架构。 阅读这篇关于 xsd 的文章
如果您有元素minOccurs="0",nillable="true"它仍然会生成 xSpecified 字段。
private System.Nullable<bool> x;
private bool xSpecified;
Run Code Online (Sandbox Code Playgroud)
如果您希望字段可为空,则 xsd 中的元素需要minOccurs="1"和nillable="true"。
private System.Nullable<bool> x;
Run Code Online (Sandbox Code Playgroud)
可空和指定之间的区别:
<minzero xsi:nil="true"><minzero>希望能帮助到你 :)