WSDL.exe proxy client code 多出來的Specified 參數

WSDL.exe proxy client code 多出來的Specified 參數

我拿到了一個wsdl檔, 順利的使用wsdl產生代碼, 但我在引用時卻發現本來只有1個參數的web method, 卻變成了2個?!  第2個是第1個名字加上 "Specified"

好加在網路上有人遇過:

http://stackoverflow.com/questions/1184245/vs2003-web-reference-for-a-wcf-service-has-extra-idspecified-parameter

本篇只是隨手整理成中文內容.

 

因為舊版的.NET Framework 並沒有Nullable的 value type, 所以當wsdl描述是可null的value type時, wsdl.exe 就會另外加一個參數來處理null.

如下方 debug 參數的minOccurs="0" 時, 代表可以 null

   1:              <xs:element name="helloBoolean">
   2:                  <xs:complexType>
   3:                      <xs:sequence>
   4:                          <xs:element minOccurs="0" name="debug" type="xs:boolean"/>
   5:                      </xs:sequence>
   6:                  </xs:complexType>
   7:              </xs:element>

 

Web Client 必須這樣子呼 :

   1:  new TestService().helloBoolean( true , true );
   1:  new TestService().helloBoolean( true, false ); // nullable

 

PS: .NET Framework 2.0 真是一個可以媲美Windows XP的成功產品, 太多客戶停留在這裡了...