2011-08-09 8 views
1

私はVS2010を使用しており、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> 

:私は次のようにWSDLで定義されている私の要素の一つに問題があることを、過ごしてい

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

問題があることですVSはこの特定の要素を列挙型にするときに、文字列型に変換しています。それは文字列型NumberTypesに変換されます。これは、型stringのnumberTypesFieldを返すgetメソッドを持ちます。

私のスキーマNumberTypes要素が 'itemType'属性を持つxs:listを使用しているという事実に関連していると思います。代わりに、これをtype = "tns:NumberType"属性のxs:elementに変更すると、その列挙型が生成されるはずです。

xs:listを使用して列挙を行うにはどうしたらいいですか?最初に正しく変換されないのはなぜですか?

ありがとうございました。

+0

ああああ、相互運用性と標準の大きな嘘です。私はjavaを.Netに話すことで若干の髪をゆるめます。幸運 –

答えて

1

xs:listが正しくシリアル化されることはあまりありませんでした。代わりに、私は同じノードの複数のインスタンスを許可し、.NETは "リスト"または "配列"に適切に配置する方法を知っています。

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

ああありがとう、それは働く:)うーん、今は、列挙型を正しく(NumberType)を生成し、型NumberType [] ...を持つNumberTypes要素を生成します。配列は動作するのが少し難しいです。 .NETでは代わりにリストを生成しますか?さもなければ、それを追加するために配列のサイズを変更しなければならない、または多くの要素がない場合でも列挙型のサイズに初期化する必要があります。より良い方法がありますか? – Josh

+0

私は、 '高度な'オプションを見つけました:) – Josh

+0

それは動作していません - 私はコレクション型ドロップダウンリスト(arraylist、一般的なリストなど)で選択しても、常に配列を生成し続けます。何が間違っている?生成されたコードは、このいつものようになります。/// [System.Xml.Serialization.XmlElementAttribute( "NumberTypes"、受注= 0)] 公共NumberTypeは[] NumberTypes { のget { リターンthis.numberTypesField。 } { this.numberTypesField = value; this.RaisePropertyChanged( "NumberTypes"); } } – Josh

関連する問題