我想請求你的幫助。我在這裏有問題與字典的WCF反序列化,其中枚舉類型被用作關鍵字。WCF反序列化的字典枚舉類型是關鍵
我有兩個數據對象:
[DataContract]
public enum MyEnum : int
{
[EnumMember]
Value1 = 0,
[EnumMember]
Value2 = 1
}
和
[DataContract]
[KnownType(typeof(MyEnum))]
public class ReturnData
{
[DataMember]
public IDictionary<Enum, string> codes;
}
事實上ReturnData
類包含多個數據成員,但他們不是我的例子很重要。
目的通過方法返回這些數據:
[OperationContract]
public ReturnData Method1()
{
ReturnData data = new ReturnData();
data.codes = new Dictionary<Enum, string>();
data.codes.Add(MyEnum.Value1, "stringA");
return data;
}
當我打電話方法1從客戶端然後下拋出異常:
格式化引發了異常,而試圖反序列化消息:嘗試反序列化參數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類來解決這個問題?
注:當我改變ReturnData
成員codes
關鍵數據類型MyEnum
而不是Enum
public IDictionary<MyEnum, string> codes;
然後反序列化可以正常工作和數據從服務器端客戶端沒有問題轉移到使用。
感謝您的幫助。
傑森您好!你有沒有得到這個問題的答案?我有與涉及列表和字典相同的問題。 – Nayan 2011-10-10 13:55:14