Этот вопрос задает вопрос о том, как вывести перечисление языка программирования через веб-службу SOAP. Это невозможно. Вот почему нет:
Под «перечислением» 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
.
Обратите внимание, что это приведет к отображению перечисления с одинаковыми именами, но не сохранит целочисленные значения. –