2011-08-09 37 views
1

我正在使用VS2010並使用「添加服務引用」功能從我的WSDL生成客戶端類。我有我的元件,其在WSDL中定義的一個如下問題:C#.NET使用WSDL(從XML模式)生成Web服務引用問題

<xs:simpleType name="NumberType"> 
    <xs:restriction base="xs:string"> 
     <xs:enumeration value="ONE" /> 
     <xs:enumeration value="TWO" /> 
     <xs:enumeration value="THREE" /> 
    </xs:restriction> 
</xs:simpleType> 

此類型在我的元件中的一箇中使用這樣的:

<xs:element name="NumberTypes"> 
    <xs:simpleType> 
     <xs:list itemType="tns:NumberType" /> 
    </xs:simpleType> 
</xs:element> 

的問題是VS將這個特定的元素轉換爲一個字符串類型,當它應該是一個枚舉。所以它將它轉換爲一個字符串NumberTypes,它有一個返回numberTypesField也是string類型的get方法。

我認爲這個問題與我的模式NumberTypes元素使用xs:list和'itemType'屬性有關。如果我將它改爲具有type =「tns:NumberType」屬性的xs:元素,則應該按照它應該生成的枚舉。

那麼我該如何使枚舉工作與xs:list?爲什麼它不能正確轉換?

感謝您的任何幫助。

+0

啊啊!,互操作性和標準的大謊言。我讓java和.NET說話時會鬆動一些頭髮。祝你好運 –

回答

1

我沒有太多的運氣讓xs:list正確序列化。相反,我只允許同一個節點的多個實例,並且.NET知道如何正確地將它放入「列表」或「數組」中。

<xs:element minOccurs="0" maxOccurs="unbounded" name="NumberTypes"> 
    ... 
</xs:element> 
+0

哦,謝謝,這有效:)嗯,它現在正確生成枚舉(NumberType),並且還生成一個NumberTypes元素,其類型NumberType [] ...數組有點難以使用 - 是否有可能使.NET生成一個列表呢?否則我不得不調整數組的大小來添加它,或者將它初始化爲枚舉的大小,即使可能沒有那麼多元素。有沒有更好的辦法? – Josh

+0

沒關係,我找到了'高級'選項:) – Josh

+0

雖然它不工作 - 無論我在集合類型下拉列表中選擇了什麼(數組列表,通用列表等),它總是會繼續生成數組。任何想法有什麼不對?所生成的代碼看起來是這樣總是: /// [System.Xml.Serialization.XmlElementAttribute( 「NumberTypes」,訂單= 0)] 公共NumberType [] NumberTypes { 獲得{ 返回this.numberTypesField; } 集合{ this.numberTypesField = value; this.RaisePropertyChanged(「NumberTypes」); } } – Josh

相關問題