用C#.NET調用Java開發的WebService時,先在用戶端封裝的帶有int屬性的對象,當将該對象傳到伺服器端時,伺服器端可以得到string類型的屬性值,卻不能得到int類型、double和DateTime類型的值(在服務端得到的均為null) 解決辦法: VS2005封裝WebService引用
用C#.NET調用Java開發的WebService時,先在用戶端封裝的帶有int屬性的對象,當将該對象傳到伺服器端時,伺服器端可以得到string類型的屬性值,卻不能得到int類型、double和DateTime類型的值(在服務端得到的均為null)
解決辦法:
VS2005封裝WebService引用時,如果WebService釋出的是一個基本資料類型組成的對象,則會對該對象的非string屬性同時生成兩個屬性,一般是這樣的"屬性××"、"屬性××Specified"。而"屬性名Specified"是一個bool類型,隻有這個屬性被設定成true時,"屬性××"的值才會被序列化成xml傳遞。
同樣的道理,用.NET提供WebService給JAVA調用時,如果是一個基本資料類型組成的對象,則會對該對象的非string屬性同時生成兩個屬性,一般是這樣的"屬性××"、"屬性××Specified"。如果不将“屬性××Specified”設定為true的話,服務端得到的資料将是null。解決辦法就是把“屬性××Specified”設定為true或者把“屬性××Specified”删掉。
資料:http://msdn.microsoft.com/zh-cn/library/system.xml.xmlattribute.specified(VS.80).aspx
.NET Framework 類庫
XmlAttribute.Specified 屬性
擷取一個值,該值訓示是否顯式設定了屬性值。
命名空間:System.Xml
程式集:System.Xml(在 system.xml.dll 中)
屬性值
如果在原始執行個體文檔中顯式地為該屬性給定一個值,則為 true;否則為 false。false 值訓示該屬性的值來自 DTD。
備注
該屬性是由實作負責的,而不是使用者。如果使用者更改該屬性的值(即使它最後與預設/固定值具有相同的值),Specified 标志就會自動轉為 true。若要重新将該屬性指定為 DTD 中的預設/固定值,則使用者必須删除該屬性。然後,實作提供一個新屬性,其 Specified 設定為 false,并具有預設/固定值(如果存在的話)。
摘要:
如果屬性具有文檔中的配置設定值,則 Specified 為 true,并且該值是配置設定值。
如果屬性沒有文檔中的配置設定值,而具有 DTD 中的預設/固定值,則 Specified 為 false,該值是 DTD 中的預設/固定值。
否則,該屬性不出現在文檔的結構模型中
轉載于:https://www.cnblogs.com/zhbsh/archive/2013/04/22/3035477.html