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;

相关文章:

  • 2022-02-03
  • 2021-12-23
  • 2021-12-04
  • 2022-02-17
  • 2022-01-19
  • 2021-06-25
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-03-10
  • 2021-12-16
  • 2022-12-23
  • 2021-12-21
相关资源
相似解决方案