Integer在webservice的传递

 

 

Integer在webservice的传递要注意的一个重要细节是MyBase元素的ID被类型xsd:int定义,并且包含minOccurs=0的属性。MyBase 的XML Schema定义如下所示:



1 <xs:complexType name="MyBase"> 
2    <xs:sequence> 
3       <xs:element minOccurs="0" maxOccurs="1" name="ID" type="xs:int" 
4        nillable="true" /> 
5    </xs:sequence> 
6 </xs:complexType> 

 

当minOccurs=0时,表明ID属性可以在XML文档中省去。不过这将导致.NET平台的一个问题:在.NET中xsd:int映射为Int32,Int32是一个数值类型,数值类型不能为空。这就意味着,由于Int32的值必须是有效数值,所以无法决定是否设置ID属性。.NET框架通过创建另一个Boolean类型的IDSpecified变量来解决这个问题。此变量由.NET XML序列逻辑来检查,用以决定ID变量是否应该被设置,其本质就是给ID赋上NULL/not NULL的值。因此无论是否想访问ID变量,你都首先要检查或设置IDSpecified变量。关于这种运用模式的更多详细信息,请查阅XmlIgnoreAttribute类的MSDN文档。

故在客户端给int变量赋值时,同时设置IDSpecified=true;
posted on 2010-07-30 11:51  巍巍边疆  阅读(404)  评论(0编辑  收藏  举报