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