当前位置: 代码迷 >> Web Service >> webservice 设置Nillable=false and MinOccurs=1解决方法
  详细解决方案

webservice 设置Nillable=false and MinOccurs=1解决方法

热度:391   发布时间:2016-05-02 03:10:00.0
webservice 设置Nillable=false and MinOccurs=1
在做webservice时,通过编写wsdl,反向发布webservice时,遇到问题:
不能同时设置:

<xs:element minOccurs="1" maxOccurs="1" name="IDType" nillable="true" type="xs:string" />

发现 Nillable=false and MinOccurs=1 不能同时成立。

  如果设置 nillable="true" 则minOccurs="1",
  如果这是 nillable="false" 则minOccurs="0",

怎么实现 则minOccurs="1" 且 nillable="false"???


------解决方案--------------------
顶一个,没编写过wsdl,学习。。。
------解决方案--------------------
MSDN:
如果某个元素是使用 nillable="false" 声明的或者没有 nillable 特性,则无论nil特性的值是什么,该特性出现在对应的实例元素中都是无效的。
对于引用类型,IsNullable 属性的值还决定了 <element> 元素的 minOccurs 特性值。如果 IsNullable 的值为 true,则生成的 minOccurs 值为 1;否则值为 0。

http://msdn.microsoft.com/zh-cn/library/zds0b35c.aspx


设置minOccurs="0" 在null的时候,序列化时字段就不会出现在xml中了
如果nillable="false"表示不接受空值,在序列化时会跳过该字段的空值(不出现在XML中)


综上,你的需求只需要设置minOccurs="1"即可,最少出现一次
------解决方案--------------------
我都是用 nillable 只在数组里用minOccurs 

type="xs:string" 是简单类型 minOccurs 不起作用的
我觉得 用 nillable="false" 就是变量不能为空,肯定有一个值了
已经实现要求了

“怎么实现 则minOccurs="1" 且 nillable="false"???”

------解决方案--------------------
LS说的有道理
编写类时,肯定知道是对非空属性加IsNullable=false,反向生成接口你看下生成的CS代码了
这两个属性相互影响,你的需求只需要设置其中一个就行了
  相关解决方案