당신의 도움을 요청하고 싶습니다. 여기에 Enum 형식이 키로 사용되는 Dictionary의 WCF deserialization 문제가 있습니다.열거 형이 키가되는 사전의 WCF 비 직렬화
나는 두 개의 데이터 개체가 :
[DataContract]
public enum MyEnum : int
{
[EnumMember]
Value1 = 0,
[EnumMember]
Value2 = 1
}
및 ReturnData
클래스는 더 많은 데이터 구성원을 포함하지만, 내 예를 들어 중요하지 않은 사실
[DataContract]
[KnownType(typeof(MyEnum))]
public class ReturnData
{
[DataMember]
public IDictionary<Enum, string> codes;
}
.
객체 메소드에 의해 반환되는 이러한 데이터
:[OperationContract]
public ReturnData Method1()
{
ReturnData data = new ReturnData();
data.codes = new Dictionary<Enum, string>();
data.codes.Add(MyEnum.Value1, "stringA");
return data;
}
내가 다음 예외가 발생 클라이언트 측에서 방법 항목을 호출 할 때 : 메시지를 역 직렬화하는 동안 포맷터는 예외가 발생했습니다
: 매개 변수 http://tempuri.org/:Method1Result을 비 직렬화하는 동안 오류가 발생했습니다. InnerException 메시지는 '라인 1 위치 522 오류입니다.' http://schemas.microsoft.com/2003/10/Serialization/Arrays:Key '요소에' http://schemas.datacontract.org/2004/07/AMService:MyEnum '데이터 계약의 데이터가 포함되어 있습니다. 디시리얼라이저는이 계약에 매핑되는 모든 유형에 대해 알지 못합니다. 'MyEnum'에 해당하는 형식을 알려진 형식 목록에 추가합니다. 예를 들어 KnownTypeAttribute 특성을 사용하거나 DataContractSerializer에 전달 된 알려진 형식 목록에 추가합니다.
어떤 아이디어가이 문제를 해결하기 위해 ReturnData 클래스를 정의합니까?
참고 : 나는 키 데이터 유형 MyEnum
대신 Enum
public IDictionary<MyEnum, string> codes;
다음 직렬화가 제대로 작동하고 데이터가 문제없이 클라이언트 측에 서버 측에서 전송로 사용 ReturnData
회원 codes
을 변경하는 경우.
도움 주셔서 감사합니다.
안녕 제이슨이 될! 이 문제에 대한 해답을 얻었습니까? 목록과 사전에 관련된 문제가 있습니다. – Nayan