2010-05-13 2 views

답변

3

열거 형을 사용하여 값을 취하거나 반환하는 메서드를 만들 수 있습니다. 열거 형의 네임 스페이스는 프록시 클래스를 생성 할 때 서비스 네임 스페이스로 변경되지만 사용자가 입력 한 값이 최종적으로 갖게됩니다. 이것은 서비스와 써드 파티에서 같은 열거 형을 사용하지 않는 한 문제가 될 수 없습니다.

+1

같은 이름의 열거 형은 노출되지만 정수 값은 유지되지 않습니다. –

3

이 질문은 SOAP 웹 서비스를 통해 프로그래밍 언어 열거를 노출하는 방법에 대해 질문합니다. 이것은 할 수 없습니다. 이유는 다음과 같습니다.

"enum"으로, OP는 명명 된 정수 값으로 구성된 유형을 생성하는 프로그래밍 언어 구문을 의미합니다. 예를 들어 :

public enum MyEnum 
{ 
    Value1 = 10, 
    Value2 = 20, 
    Value3 = 30 
} 

이것은 10 등의 이름 사이의 관계와 같은 Value 및 대응하는 값을 생성한다. SOAP 웹 서비스에는 이와 같은 것이 없습니다.

SOAP 웹 서비스는 WSDL (웹 서비스 설명 언어)을 통해 클라이언트에 자신을 설명합니다. WSDL은 XSD (XML Schema)를 사용하여 클라이언트와 서비스간에 상호 교환되는 데이터의 모양을 설명합니다.

XML 스키마에는 "enumeration"개념이 있습니다.이 개념은 특정 요소 또는 특성이 여러 값 중 하나를 가질 수 있음을 나타냅니다. 이러한 값은 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"의 세 가지 문자열 값 중 하나를 사용할 수있는 유형을 정의합니다. 이 값은 어떤 식 으로든 정수 값과 관련이 없습니다. 이 세 가지 date 값 중 하나를 취할 수있는 형을 정의

<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> 

: 2013년 6월 1일 6 월 5 일, 2013 년 6 월 1, 2014 참고가 있다는 것을 그냥이 다음 사항을 고려, 집으로 망치 정수 값과의 연관성이나 문자열 이름과의 연관성이 없습니다.

결론은 XML 스키마가이라는 프로그래밍 언어 개념을 설명 할 수 없다는 것입니다. 결과적으로 WSDL은 enum이라는 프로그래밍 언어 개념을 사용할 수 없으므로 SOAP 웹 서비스는 enum을 노출 할 수 없습니다.

위의 MyEnum에서와 같이 이름이나 값을 표시하는 것이 가장 좋지만 둘 다 표시하는 것은 좋습니다. 클라이언트가 해당 서비스를 사용하면 프로그래밍 언어로 MyEnumenum으로 변환 할 수 있습니다.그러나 이름과 연관된 정수 값이 없으므로 각 클라이언트는 다른 정수 값을 사용하는 것이 합리적으로 예상 될 수 있습니다. 한 클라이언트는 Value11을 사용하고 다른 클라이언트는 0을 사용할 수 있습니다.

관련 문제