Я пытался найти это в Интернете, но все примеры WSDL, похоже, не совсем объясняют, Я должен пометить вещи как строку базового типа в WSDL или int ...
По сути, я пытаюсь создать свой WSDL, чтобы я мог представлять перечисление. Я уже имею в виду C # Enum, что хочу сопоставить его с ...
public enum MyEnum {
Item1 = 0,
Item2 = 1,
Item3 = 2,
SpecialItem = 99
}
Я не уверен, как должен выглядеть мой WSDL ... Я думаю, что это один из двух, но даже тогда я не на 100% % конечно...
<wsdl:types>
<xsd:schema targetNamespace="http://www.mysite.com/MyApp"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>
<xsd:simpleType name="MyEnum">
<xsd:restriction base="xsd:int">
<xsd:enumeration value="0" />
<xsd:enumeration value="1" />
<xsd:enumeration value="2" />
<xsd:enumeration value="99" />
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
</wsdl:types>
ИЛИ
<wsdl:types>
<xsd:schema targetNamespace="http://www.mysite.com/MyApp"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>
<xsd:simpleType name="MyEnum">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Item1" />
<xsd:enumeration value="Item2" />
<xsd:enumeration value="Item3" />
<xsd:enumeration value="SpecialItem" />
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
</wsdl:types>
Перечисления будут выглядеть как их строковые представления. Таким образом, правильный wsdl будет представлять перечисления как:
<xs:simpleType name="MyEnum">
<xs:restriction base="xsd:string">
<xs:enumeration value="Item1" />
<xs:enumeration value="Item2" />
<xs:enumeration value="Item3" />
<xs:enumeration value="SpecialItem" />
</xs:restriction>
</xs:simpleType>
Вышеприведенное автоматически сериализует/десериализует для вас тип перечисления MyEnum. Если вы представите перечисления как xsd:int, вам придется вручную преобразовывать их туда и обратно.
Вы можете ссылаться на определение перечисления в своей схеме следующим образом:
<xsd:complexType name="Class1">
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="1" name="MyEnumProperty" type="MyEnum" />
</xsd:sequence>
</xsd:complexType>