내 WFC 프로젝트 WSDL에 0 기반 인덱스에 대한 EnumerationValue 주석이 없습니다. JSON이 결제 수단으로 0 또는 1로 전달되면 변환 중에 다른 시스템에 문제가 발생합니다.
다음과 같이 내 .net 클래스의 열거 형을 정의했습니다.
[DataContract(Name = "PaymentMethod")]
public enum PaymentMethod
{
[EnumMember]
Mastercard = 0,
[EnumMember]
Visa = 1
}
[DataContract(Name = "RequestType")]
public enum RequestType
{
[EnumMember]
New = 1,
[EnumMember]
Reload = 2
}
그러나 생성 된 WSDL은 다음과 같습니다.
<xs:simpleType name="PaymentMethod">
<xs:restriction base="xs:string">
<xs:enumeration value="Mastercard"/>
<xs:enumeration value="Visa"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="PaymentMethod" nillable="true" type="tns:PaymentMethod"/>
<xs:simpleType name="RequestType">
<xs:restriction base="xs:string">
<xs:enumeration value="New">
<xs:annotation>
<xs:appinfo>
<EnumerationValue>1</EnumerationValue>
</xs:appinfo>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="Reload">
<xs:annotation>
<xs:appinfo>
<EnumerationValue>2</EnumerationValue>
</xs:appinfo>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
<xs:element name="RequestType" nillable="true" type="tns:RequestType"/>
데이터 계약에 포함 되려면 EnumMemberAttribute 특성을 적용해야합니다. .NET Framework에서는 항상 열거 형에 대한 기본값 인 특수 값 0 (영)을 열거 형에 적용 할 수 있습니다. 그러나이 특수한 0 값도 EnumMemberAttribute 특성으로 표시되지 않으면 직렬화 할 수 없습니다.
이에 대한 두 가지 예외가 있습니다.
EmitDefaultValue 속성이 false로 설정된 열거 형 데이터 멤버 (이 경우 값이 0 인 열거 형은 직렬화 된 데이터에서 생략 됨)
[DataContract(Name = "PaymentMethod")]
[Flags] // <---- Try this
public enum PaymentMethod
{
[EnumMember]
Mastercard = 0,
[EnumMember]
Visa = 1
}
[DataContract(Name = "RequestType")]
public enum RequestType
{
[EnumMember]
New = 1,
[EnumMember]
Reload = 2
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다