В языках, производных от C (C #, C ++, Java), enum
фактически представляет собой набор именованных целочисленных значений.
В XML-схеме нет соответствующего понятия, поэтому в веб-сервисах такого понятия нет.
Прежде чем вы или кто-либо еще упомянете аспект <xs:enumeration/>
, это не то, для чего он. <xs:enumeration/>
предоставляет список (перечисление) возможных лексических значений для типа. Невозможно связать числа с этими лексическими значениями. Следующее enum
:
public enum Enumeration1
{
E1a = 1,
E1b = 2,
E1c = 4
}
становится следующей XML-схемой:
<s:simpleType name="Enumeration1">
<s:restriction base="s:string">
<s:enumeration value="E1a"/>
<s:enumeration value="E1b"/>
<s:enumeration value="E1c"/>
</s:restriction>
</s:simpleType>
Обратите внимание на отсутствие 1, 2 или 4.
Все это говорит о том, что элемент или атрибут этого типа будет строкой и может иметь одно из значений "E1a", "E1b" или "E1c".
Если клиентский прокси-сервер построен из WSDL с такой схемой, и если генератор прокси-кода достаточно умен, он может решить, что изначально это был язык программирования enum
. В этом случае это создаст тип как
public enum Enumeration1
{
E1a,
E1b,
E1c
}
Поскольку он не имеет доступа к целым числам.