Этот вопрос задает вопрос о том, как предоставить перечисление языка программирования через веб-сервис SOAP. Это не может быть сделано. Вот почему нет:
Под "enum" OP подразумевается конструкция языка программирования, которая создает тип, состоящий из именованных целочисленных значений. Например:
public enum MyEnum
{
Value1 = 10,
Value2 = 20,
Value3 = 30
}
Это создает связь между именами, такими как Value
, и соответствующими значениями, такими как 10
. В веб-сервисах SOAP нет ничего подобного.
Веб-службы SOAP описывают себя клиентам через WSDL (язык описания веб-служб). WSDL использует XML-схему (XSD) для описания формы данных, подлежащих обмену между клиентами и службой.
XML-схема имеет концепцию «перечисления», которая описывает, что определенный элемент или атрибут может иметь одно из нескольких значений. Эти значения перечислены (перечислены) в схеме XML. Например,
<xs:simpleType name="MyEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="Value1"/>
<xs:enumeration value="Value2"/>
<xs:enumeration value="Value3"/>
</xs:restriction>
</xs:simpleType>
Это определяет тип, который может принимать одно из трех строковых значений: «Value1», «Value2» или «Value3». Эти значения никак не связаны с целочисленными значениями. Просто чтобы забить его домой, подумайте о следующем:
<xs:simpleType name="MyDateEnumeration">
<xs:restriction base="xs:date">
<xs:enumeration value="2013-06-01"/>
<xs:enumeration value="2013-06-05"/>
<xs:enumeration value="2014-06-01"/>
</xs:restriction>
</xs:simpleType>
Определяет тип, который может принимать одно из трех значений date
: 1 июня 2013 г., 5 июня 2013 г. или 1 июня 2014 г. Обратите внимание, что нет связи ни с целыми значениями, ни даже с любой с любым именем строки.
Суть в том, что XML-схема не может описать концепцию языка программирования enum
. В результате WSDL не может использовать концепцию языка программирования enum
, что означает, что веб-службы SOAP не могут предоставлять enum
.
Лучшее, что можно сделать - это раскрыть имена или значения, но не оба, как в MyEnum
выше. Когда клиент использует эту услугу, он может перевести MyEnum
в enum
на языке программирования. Однако, поскольку нет целочисленного значения, связанного с каким-либо из имен, разумно ожидать, что каждый клиент будет использовать другое целочисленное значение. Один клиент может использовать 1
для Value1
, а другой может использовать 0
.