visual-studio-2010 - 为什么VS会生成一个xs :nonNegativeInteger attribute for WCF client?的字符串属性

标签 visual-studio-2010 wcf wsdl type-conversion

我正在使用 VS2010 构建 WCF 客户端。我们使用的 Web 服务定义了一些返回为 xs:nonNegativeInteger 的数据。然而,VS2010 在生成 WCF 客户端代码后,会为这些 xs:nonNegativeInteger 属性生成具有字符串类型属性的类。

我想知道为什么会这样,以及是否以及如何告诉 VS2010 将其映射从 xs:nonNegativeInteger 调整为整数而不是字符串。

(我无法更改我们使用的 Web 服务的 wsdl...而且我也对简单地更改生成的代码犹豫不决,以防我们需要更新服务引用,所以某种数据类型映射通过配置将是理想的。)

谢谢大家!

我们使用的 WSDL 示例片段:

<xs:element minOccurs="0" name="blub" type="xs:nonNegativeInteger" />

生成的 WCF 客户端代码的示例片段:

<System.Xml.Serialization.XmlElementAttribute(DataType:="nonNegativeInteger", Order:=0)>  _

Property blub() As String

最佳答案

您似乎已将 SvcUtil 配置为使用 XmlSerializer 而不是 DataContractSerializer。 MSDN 说 XmlSerializer 将序列化 xs:nonNegativeInteger to stringDataContractSerializerserialize it to Int64 (在每个页面中搜索“nonNegativeInteger”)。

如果出于某种原因不想使用 DataContractSerializer,最好的选择是利用生成的代理类作为 partial 类并创建一个单独的属性(intlong)封装转换逻辑,而不影响 WCF 如何序列化/反序列化该字段。

顺便说一句:如果 string 转换真的让你很烦,vote up this issue in CodePlex .

关于visual-studio-2010 - 为什么VS会生成一个xs :nonNegativeInteger attribute for WCF client?的字符串属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13566781/

相关文章:

visual-studio-2010 - VS2010 : minimal build log in output and detailed log in log file

c++ - 如何在 windows/msvs 上的同一个 cmake 项目中构建可执行文件和共享库

c# - 如何在 MessageContract 类型中使用 XML 属性?

java - 为 Java 中的 WCF 服务生成代理和 PHP 重复消息错误

java - 如何使用代码生成的 SOAP 客户端?

java - jaxws 导入。绑定(bind)文件被忽略

asp.net 大师不会使用样式表

c# - 处理 WCF 服务中的异常?

php - 将 PHP SoapClient 类映射选项与包含同名元素和复杂类型的 WSDL 一起使用

c++ - 如何在依赖的静态库中链接 Boost